0

当 i cout holder(is char) 值时,显示一个歧义字母。如何读取字母并保存到数组然后打印它们?

while (holder=fgetc(fileA) != EOF) {
    cout << holder;
    lenA++;
    temp = (char*) realloc(seqA,lenA*sizeof(char));
    if (temp != NULL) {
        seqA = temp;
        seqA[lenA-1] = holder;
    }
}
4

3 回答 3

1

对于初学者,您需要一些括号,否则您将继续存储 and 的结果之间的fgetc比较EOF

while((holder=fgetc(fileA)) != EOF)
      ^                   ^
于 2013-03-02T18:42:31.187 回答
1

fgetc返回一个int,而不是一个char。这是因为EOF大于 char 可以存储的值(以避免与 中的值冲突char)。因此,您很可能会越过文件末尾并读取随机数据。

将持有人更改为int(char)holder在打印并将其存储在数组中时使用。

于 2013-03-02T19:23:51.027 回答
0

我再次建议您首先通过查找到最后并确定文件大小来检测文件的大小,一次分配内存并通过一次调用 fread 一次读取整个文件。

看我对你上一个问题的回答

于 2013-03-02T20:04:01.443 回答