【发布时间】:2014-12-30 17:11:28
【问题描述】:
我需要从文件中读取文本(几句话的文本),然后写下所有唯一字符。为此,我需要使用一个数组。我写了这段代码,但它什么也没给我。
#include <stdio.h>
int main(void) {
int i;
FILE *in = fopen("test.txt", "r");
if (in) {
char mas[50];
size_t n = 0;
int ch;
while ((ch = getc(in)) != EOF) {
mas[n++] = (char)ch;
}
fclose(in);
}
for (i = 0; i < 50; i++) {
printf("%c", mas[i]);
printf("\n");
}
return 0;
}
【问题讨论】:
-
它实际上应该生成一个编译错误,表明
mas在printf("%c",mas[i])语句中未定义,因为char mas[50]仅在您的if语句块中定义。 -
这一项已修复。现在它给出了一些输出,但它是不可理解的,它只包含数字,而不是文本中的字符。
-
这是因为您正在打印
mas的所有 50 个元素,但您可能没有从文件中读取 50 个字符。剩余的mas条目只是随机内存内容。你必须记录你读了多少个字符,然后只打印出来。例如,如果您将size_t n声明放在if块之外,那么您可以使用n作为计数,并使用for (i = 0; i < n; i++)...打印每个读取的字符。