Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C从文件读取时输出“{”_C - Fatal编程技术网

C从文件读取时输出“{”

C从文件读取时输出“{”,c,C,我使用Xcode编写了以下代码来读取文件: int main (int argc, char *argv[]) { FILE *fp = fopen("hello.rtf", "r"); printf("%c\n", fgetc(fp)); fclose(fp); if (fp == NULL) { printf("Could not open file!"); return 1; }

我使用Xcode编写了以下代码来读取文件:

int main (int argc, char *argv[])
{       
    FILE *fp = fopen("hello.rtf", "r");

    printf("%c\n", fgetc(fp));

    fclose(fp);

    if (fp == NULL)
    {
        printf("Could not open file!");
        return 1;
    }

    // insert code here...
    return 0;
}

我得到的字符是{,它不是文件中的第一个字符。

RTF规范说RTF文件中的第一个字符应该是{,看来您得到了预期的结果。请记住,文字处理软件不会显示文件中的确切字符,但会显示文件中字符描述的格式化文本

要查看文件中的确切字符,可以使用cat POSIX或键入DOS/Windows命令提示符将其输出


if fp==NULL检查应该在fopen行之后立即执行;最后已经太迟了。

.rtf富文本格式文件不是一个文本文件。请参阅@BLUEPIXY的代码示例,我已将文件扩展名更改为.txt,但仍然得到相同的输出。这是因为内容格式的差异不是文件扩展名的问题在上。我认为我们应该将其重新保存为在编辑器中打开的文本,以便能够读取富文本文件。@BLUEPIXY它刚刚工作了!!!谢谢,伙计。文件扩展名只是帮助操作系统选择正确的程序来打开该文件。它与文件内容无关。您可以将*.mp4文件重命名为任何扩展名,如*.doc、*.txt、*.xyz。。。而且只要文件中有正确的头,它仍然可以在任何媒体播放器中毫无问题地打开。