【发布时间】:2018-03-19 05:53:02
【问题描述】:
我正在尝试编写一个简单的代码来读取标准输入,然后使用它,所以我尝试输入一个小程序,以便将我的标准输入放在一个定义大小的表中,它看起来像这样:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main(int argc, char *argv[]){
int c , i = 0 ;
char str[1024];
while(c != EOF){
c = fgetc(stdin);
str[i]=c;
i++;
}
printf("%s\n",str);
return 0;
}
当我用
运行程序时$ test < file.json
我明白了:
{
"num": 8
}�@/�
我无法解释最后四个未定义的字符。我猜它与fgetc() 指针有关。我想在 EOF 停下来。
我到处找了,还是搞不懂。我还在学习 C 语言,所以我的目标是使用命令读取标准输入,它是一个 JSON 文件
$ test < file.json
然后使用 Jansson 提取和使用数据,但我的问题是使用该命令读取文件。
【问题讨论】:
-
你从检查一个未初始化的变量开始,然后你不会因为 EOF 而停下来。您需要读取字符,如果它是 EOF,则停止,如果不是,则使用字符。你没有空终止你的缓冲区