【发布时间】:2017-03-21 14:14:26
【问题描述】:
所以我知道这与指针和/或内存分配有关,但我不太确定如何解决它。出于某种原因,下面的代码什么也不打印,而它应该打印文件中的第一个字符(由路径“文件名”指定)。
int text[1000] = {};
FILE *fp;
fp = fopen( filename, "r" );
int i = 0;
while(1) {
int c = fgetc(fp);
if ( c==EOF ) {
break;
} else {
text[i] = c;
}
}
printf ( "%c", text[0] );
谢谢!
【问题讨论】:
-
你永远不会增加
i,所以你只保存text[0]中的字符;因此,您只需要使用printf()编写最后一个字符(可能是换行符)。您只能通过在输出中看到一个空行来发现换行符。如果(何时)增加i,您还应该担心将太多字符读入数组,并且您可能应该打印字符串而不是只打印一个字符。否则,您可以将第一个字符读入变量,然后简单地读取其他字符并丢弃它们。并且你应该在使用fp之前检查fopen()是否成功。 -
将 %c 更改为 %d,您将知道您存储在 text[0] 中的字符的代码(ASCII 码)以及为什么没有看到任何内容。