我有两个.c
个文件:一个包含main,另一个包含我的所有函数。
在我的主要部分,我有一个部分,我想在循环看起来像这样读取一个字符:
while(ch = ReadFile(fp)) != EOF)
{
// Code
}
其中ch
是整数(int ch;
),fp
是文件指针(FILE* fp;
)。
和(不同.c
档---):
int ReadFile(FILE* fp)
{
// Some code
return n; // The next char
}
有没有人知道如何使用这种方法从主要方式一次读取一个字符?
答案 0 :(得分:8)
更新: -
来自getc
的着名<stdio.h>
是一个解决方案: -
while((ch = getc(fp)) != EOF)
{
//...
}
...
int ReadFile(FILE* fp)
{
//Do what you wish... :)
return getc(fp);
}
声明为int getc( FILE * _File);
答案 1 :(得分:0)
简单地说:
while(ch != EOF)
{
ch = fgetc(fp);
//process ch
}
请注意,fgetc
被声明为int
。
或者如果你想用char构建一个字符串char,你可以通过char读取文件char来动态分配内存,这样(假设fp
打开阅读):
char *data = NULL, *tmp;
int ch, bff = 0;
while(ch != EOF)
{
if(!(tmp = realloc(data, bff + 2)))
{
free(data);
return 1;
}
data = tmp;
ch = fgetc(fp); //or your readfile function assuming it works the same as fgetc
data[bff++] = ch;
}
data[bff] = '\0';
完成后只需free(data)
答案 2 :(得分:0)
试试这个:
int ReadFile(FILE* fp, int *buffer)
{
if(fp != NULL)
{
*buffer = fgetc(fp);
return *buffer;
}
else return NULL;
}