0
#include<stdio.h>
int main()
{
FILE  *fp;
fp = fopen("test22.txt","r");
while(fgetc(fp)!=EOF)
printf("%c",*(fp->_ptr));
return 0;
}

Code::Blocks を使用しています。「_ptr」メンバーがバッファー内の次の文字を指していることはわかっています。ファイルには、「Hello World!」というテキストが含まれています。FILE 構造体のメンバーだけを使用して、最初の文字も出力するようにプログラムを変更するにはどうすればよいですか?

4

4 に答える 4

1
#include<stdio.h>
int main()
{
    FILE  *fp;
    fp = fopen("test22.txt","r");
    if(fp == NULL){
        printf("File did not opened.\n");
        return -1;
    do{
        printf("%c",*(fp->_ptr));
    } while(fgetc(fp)!=EOF);
    fclose(fp);
    return 0;
}
于 2013-07-02T05:47:53.610 に答える
0

考えられる解決策の 1 つは、「割り当て時に参照を返す」を利用することです。つまり、このような操作の後、その結果への参照が返されます。これは、たとえば、EOF と比較するために使用できます。

あなたのコードを使用して:

#include<stdio.h>
int main()
{
    FILE  *fp;
    fp = fopen("text22.txt","r");
    char buffer;
    while((buffer=fgetc(fp))!=EOF)
        printf("%c",buf);
    return 0;
}
于 2013-07-02T08:05:04.477 に答える
0

fgetc はバッファを次の文字に進めます。fgetc 呼び出しの前に最初の文字を保存/印刷したり、do-while を使用したり、巻き戻しを呼び出したりすることができます。

于 2013-07-02T05:47:11.037 に答える