2

2 つの.cファイルがあります。1 つはメインを含み、もう 1 つはすべての関数を含みます。

私のメインでは、一度に char を読みたい部分があり、ループは次のようになります。

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

ここchで、 は整数 ( int ch;) で、fpはファイル ポインタ ( FILE* fp;) です。

そして (別の.cファイル ---):

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

この方法を使用して、この方法でメインから一度に1文字ずつ読み取る方法を知っている人はいますか?

4

3 に答える 3

8

アップデート:-

有名なgetcfrom<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

これを試して:

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

単に:

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

fgetcとして宣言されていることに注意してくださいint

または、文字列 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)あなたがそれを終えたとき

于 2012-09-04T18:25:11.607 に答える