我正在尝试读取一个包含空格或不包含空格的字符串,例如 "hello world"。通过以下方式实现,使用由用户输入的数字选择菜单。这只是我试图做的事情的一个小型复制。
#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(文件结尾)。 - user5455540scanf("%d", &option)
有关,但我不确定是否有修复的方法。 - TheBoxOkaystrlen(line[0])
替换为80
。缓冲区的大小并不是它包含的字符串的长度,而是缓冲区的总长度,在这里是80
。 - Jabberwocky