我想读取可能包含或不包含空格前缀的字符串。 “你好,世界”。通过用户输入的数字选择菜单进行以下操作。这只是我试图做的一个小副本。阅读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”的缓冲区的总长度。 –