当我运行以下代码时,它会输出'>',等待输入,然后是段错误。有人知道为什么吗?
int main(int argc, char **argv){
char input[MAX_INPUT_LINE];
while(1==1){
if (isatty(0)){
printf(">");
}
fgets(input, MAX_INPUT_LINE, stdin);
int len1=sizeof(input);
for (int i=0; i<len1; i++){
printf("%s", input[i]);
}
}
答案 0 :(得分:4)
int len1=sizeof(input);
for (int i=0; i<len1; i++){
printf("%s", input[i]); // <-- %s would expect char * not char
}
使用%c
打印不是%s
的字符。 %s
会期望nul被终止char *
而你传递char
,这会导致未定义的行为。
sizeof
将返回数组的大小而不是字符串的长度。因此,使用strlen
来获取字符串的长度。