C言語で、入力の部分がうまくいきません。

Writer: admin Type: ゃべり、雑談 Date: 2018-12-18 00:00
C言語で、入力の部分がうまくいきません。下記のコードを実行してn 空白 文字列t文字列sを入力してtの文字列を使ってsの文字列を変換しようとしたのですがなぜか1行目を入力してEnterを押したらプログラムが次の入力を待たずに何も出力せずに終了してしまいます。何が起こっているのかもわからないのですが、どこがおかしいのでしょうか。#include<stdio.h>int main(){int n, i, j, k;char s[100]={0}, t[100]={0}, a[100]={0};scanf("%d",&n);scanf("%s", t);scanf("%[^\n]%*c", s);//fgets(s, 100, stdin);/*printf("%s\n", s);for(i=0; i<50; i++)printf("%c", s[i]);printf("\n");*/for(i=0; i<26; i++){a[i]=(char)i+97;//printf("%c", a[i]);}//printf("%s", a);for(i=0; i<n; i++){ //置換回数for(j=0; j<26; j++){ //sのroopfor(k=0; k<26; k++){ //tのroopif(t[k]==s[j])s[j]=a[k]; //変換}}}printf("%s\n", s);return 0;}共感した0###自信はないけど。%s の次が %[ で、かつそこで改行が入る、からじゃないですかね。scanf の関数説明https://linuxjm.osdn.jp/html/LDP_man-pages/man3/scanf.3.htmlの変換指定子 [ のとこ読むと---- 通常行われる先頭のホワイトスペースの読み飛ばしは行われない----と書いてあるし。試してないけど、たぶんscanf("%[^\n]%*c", s);↓scanf(" %[^\n]%*c", s);とすれば(書式の先頭に1文字スペース追加)、たぶん入力するんじゃないかな。P.S.みなさん、そんなに scanf が好き なんですかね。個人的には、初学者さんほど避けた方がいい 気がするんだが。ナイス0
###scanf("%[^\n]%*c", s);で一体なにがしたいのか?これが一体何なのか理解できないままコピペしたのではないのか?ナイス0
###これ、正しく動いたとしてどう入れたらどう返ってくる予定なのでしょう?ナイス0

 

TAG