一次读取一个字符的文件

时间:2012-09-04 18:12:09

标签: c readfile

我有两个.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
}

有没有人知道如何使用这种方法从主要方式一次读取一个字符?

3 个答案:

答案 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;
}