私はスペースを含む場合も含まない場合もある文字列を読み込もうとしています。 "こんにちは世界"。ユーザーが入力した番号選択メニューで以下の操作を行います。これは私がやろうとしているものの小さなレプリカです。Cでスペースを含む文字列を読み取る
#include <stdio.h>
#include <string.h>
int main(void){
char line[3][80];
strcpy(line[0],"default line 1\n");
strcpy(line[1],"default line 2\n");
strcpy(line[2],"default line 3\n");
for(int i = 0; i < 3; i++){
printf("%s", line[i]);
}
int option = 0;
printf("would you like to replace line 1? (1 for yes)\n");
scanf("%d",&option);
if(option==1){
printf("what would you like to replace the line with?\n");
fgets(line[0],strlen(line[0]),stdin);
}
for(int i = 0; i < 3; i++){
printf("%s", line[i]);
}
}
なぜそれが私が行を変更するには、1を入力した後、それは私がそれを交換したいと自動的に空のように最初のもので、文字列を印刷し、その後何も入力しないでどうなるかを尋ねる文を印刷していることでしょうか?
私はすでにsscanf("%[^\n\t]s", line[0]);
で行を読んでみました。何か案は?
:
OPは問題に適用、私はこのような何かを行う可能性がありますストリームの最初の文字として返されます。 –
私は、 'scanf("%d "、&option)'と何か関係があると確信していますが、ユーザがその行を置き換えたいのかどうかを尋ねるときに、 – TheBoxOkay
あなたの問題には直接関係しませんが、 'strlen(line [0])'は '80'に置き換えてください。バッファのサイズは、それに含まれる文字列の長さではなく、ここで '80 'であるバッファの全長です。 –