我想讀取可能包含或不包含空格前綴的字符串。 「你好,世界」。通過用戶輸入的數字選擇菜單進行以下操作。這只是我試圖做的一個小副本。閱讀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]);
沒有任何運氣的行。有任何想法嗎?
我猜想,'fgets'讀一個EOF(文件結束)作爲流的第一個字符。 – 2016-11-11 16:09:54
我很肯定,在詢問用戶是否想要替換該行時,它與'scanf(「%d」,&option)「有關係,但是我不知道是否有辦法解決這個問題。 – TheBoxOkay
與你的問題沒有直接關係,但'strlen(line [0])'應該被'80'替代。緩衝區的大小不是它所包含的字符串的長度,而是這裏「80」的緩衝區的總長度。 –