我正在编写一个程序来读取stdin并输出它.
int main() {
FILE* inputF = stdin;
char* inputStr[10];
fread(inputStr, 1, 9, inputF);
if(ferror(inputF)) {
printf("An error occurred");
return 0;
}
inputStr[9] = '\0';
printf("%s", (const char*)inputStr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它应该创建一个10个字符长的字符串并读入9个字节的stdin,然后放入'\0'位置9.
当我运行程序时,结果如下:
gab@testvm:~/work/c/fibo$ ./a.out < test.txt
56 `ô
ga
Run Code Online (Sandbox Code Playgroud)
打印两行和多余字符(向右滚动以查看它们).
可能是什么导致了这个?
inputStr 不是字符串,
char* inputStr[10];
Run Code Online (Sandbox Code Playgroud)
这是一个10的数组char *.您应该将声明更改为char inputStr[10];.