如何将文件中的字符分配给char类型变量? (C)

时间:2018-01-20 12:15:35

标签: c

我正在阅读一个文件,我正在尝试从该文件中获取第一个字符,并分配给一个变量:currentChar

我收到以下错误消息:

  

从类型char

分配到类型FILE {aka struct _IO_FILE}时不兼容的类型
char inputFile[50] = "hello.txt"; 
FILE * inFile = fopen(inputFile, "r");
char currentChar;
currentChar = inFile[0];
fclose(inFile);

2 个答案:

答案 0 :(得分:2)

FILE是一个保存元数据的结构(由fopen()填充),该结构用作影响从文件读取的其他函数的参数。您永远不会直接访问FILE结构中的内容。

其中一个文件访问函数是fgetc(),它以FILE *作为参数并返回int - EOF(文件结尾)或从如此识别的文件中的下一个字符。

char inputFile[] = "hello.txt"; 
FILE * inFile = fopen(inputFile, "r");
// inFile == NULL means fopen() failed
if ( inFile != NULL )
{
    int currentChar;
    currentChar = fgetc( inFile );
    // check currentChar for EOF, then do something with it
    fclose(inFile);
}
else
{
    perror( "fopen() failed" );
}

答案 1 :(得分:0)

DevSolar为您的错误提供了有用的答案,并根据他的建议让您正确阅读文件内容。

然而,一次读取一个字符的文件可能比看起来更微妙:fgetc()或普通getc()返回EOF byte ,类型为unsigned char的值,其类型必须与char相同,并且不一定代表字符,尤其是如果文件使用多字节编码(如UTF-8)进行编码。这个字节值可以安全地存储到char变量中,但是如何解释它是程序员的责任,具体取决于实际的文件类型和编码。