2

我有两个.c文件:一个包含主要文件,另一个包含我的所有功能。

在我的主要部分中,我想一次读取一个字符,循环如下所示:

while(ch = ReadFile(fp)) != EOF)
{
    // Code
}

其中ch是整数 ( int ch;) 并且fp是文件指针 ( FILE* fp;)。

并且(不同的.c文件---):

int ReadFile(FILE* fp)
{
    // Some code
    return n; // The next char
}

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

4

3 回答 3

8

更新:-

著名getc的 from<stdio.h>是一个解决方案:-

while((ch = getc(fp)) != EOF)
    {
      //...
    } 
...
int ReadFile(FILE* fp)
{
   //Do what you wish... :)
  return getc(fp); 
}

声明为int getc( FILE * _File);

于 2012-09-04T18:15:01.430 回答
0

简单地:

while(ch != EOF)
{ 
    ch = fgetc(fp);
    //process ch
}

请记住,它fgetc被声明为int.

或者,如果您想逐个字符地构建一个字符串,您可以逐个字符地读取文件以动态分配内存,如下所示(假设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)在你完成它的时候

于 2012-09-04T18:25:11.607 回答
0

试试这个:

int ReadFile(FILE* fp, int *buffer)
{
    if(fp != NULL)
    {
        *buffer = fgetc(fp);
        return *buffer;
    }
    else return NULL;
}
于 2012-09-04T18:30:46.137 回答