【发布时间】:2018-10-18 17:23:30
【问题描述】:
我试图获取文件的内容并将其放入一个字符串中。当我运行我的程序并打印字符串时,我得到了文件的内容以及一些奇怪的字符。
我的代码:
int size = 0;
char ch = 0;
char* content = 0;
FILE* fs = fopen(file, "r");
//getting file's content and put it into a string
while (ch != EOF)
{
ch = (char)fgetc(fs);
size++;
content = myRealloc(content, size);
content[size - 1] = ch;
}
printf("%s", content);
我的Realloc:
char* myRealloc(char* array, int size)
{
char* temp = 0;
temp = realloc(array, size * sizeof(char));
return temp;
}
文件内容:
1,2,3,4
5,6,7,8
a,b,c,d
e,f,g,h
当我打印时:
1,2,3,4
5,6,7,8
a,b,c,d
e,f,g,h ²²²²ר─
【问题讨论】:
-
如果
ch = (char)fgetc(fs);正在读取EOF怎么办?你也没有展示你是如何打印它的。 -
你到底有什么不明白的?首先,没有等于
EOF的char值。它是int。所以你的while条件永远不会成立。其次,根据EOF将值分配到数组中测试该值。第三 - 您没有显示负责输出的代码。 -
完全正确 - 不要试图强制理解类型,使用函数返回的类型 - 这是有原因的。有一个常见的假设“我正在使用字符,所以我的类型必须是
char”,但请记住'A'的类型为int,您可以使用sizeof('A')进行验证。 -
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
另外,请不要add chatty material - 编辑倾向于删除它。简洁规则
:-)
标签: c file debugging printing char