【发布时间】:2013-09-03 21:24:09
【问题描述】:
我正在寻找一种使用 C 中独特的 void 函数来读取 file 和 stdin 流的方法>。我正在尝试使用此功能:
#define ENTER 10 //'\n' ASCII code
........
void read(FILE *stream, char *string) {
char c;
int counter = 0;
do {
c = fgetc(stream);
string = realloc(string, (counter+1) * sizeof(char));
string[counter++] = c;
} while(c != ENTER && !feof(stream));
string[counter-1] = '\0';
}
但它仅适用于 stdin 流。当我使用文本文件时,文件内容在函数之外不可见。我这样调用这个函数:
read(stdin, inputString);
read(inputFile, fileContent);
并且只适用于第一种情况。
P.S.:最初,inputString 一个文件内容被声明为
char *inputString = malloc(sizeof(char));
char *fileContent = malloc(sizeof(char));
而且我知道 fgetc 返回 int,char by char 重新分配很昂贵(但我只需要使用必要的内存)并且 EOF 或 '\n' 是存储在字符串中(但之后被 0 终止符替换)。
【问题讨论】:
-
你还没有初始化计数器变量。
-
对不起..这里写错了,但我现在已经编辑了。