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

如何将文件中的字符指定给char类型变量?(C),c,C,我正在读取一个文件,并试图从该文件中获取第一个字符,并将其分配给一个变量:currentChar 我收到以下错误消息: 从类型文件{aka struct\u IO\u FILE} 文件是一种保存元数据的结构(由fopen()填写),其他影响文件读取的函数将其用作参数。您永远不会直接访问文件结构中的内容 文件访问函数之一是,它将文件*作为参数,并返回int——或者EOF(文件结尾)或者如此标识的文件中的下一个字符 char inputFile[] = "hello.txt"; FILE * in

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

我收到以下错误消息:

从类型
文件{aka struct\u IO\u FILE}


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

文件访问函数之一是,它将
文件*
作为参数,并返回
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" );
}

DevSolar给出了一个有用的答案,并对您的错误进行了更正,遵循他的建议可以让您正确阅读文件内容


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

请显示您的代码您的教科书显示了什么?@andretruckle是的,我无意中按enter键提交,因为我想在新的一行上打字,但它提交了这篇文章,哎呀!不习惯使用,所以有一段时间没用过。请阅读这本教科书。请阅读
fopen
的手册页。PS:检查你可以使用的返回值。很好的清理!您还可能提示
char inputFile[50]=“hello.txt”不足:
char inputFile[]=“hello.txt”
常量字符*inputFile=“hello.txt”
是更安全的选择,使用fopen(“hello.txt”,“r”)
更简单。
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" );
}