C 文件程序-fseek不工作

C 文件程序-fseek不工作,c,file,fseek,C,File,Fseek,在代码中使用此fseek()函数时遇到问题。我写的文本并没有从我指出的点开始,我也不知道为什么。它应该从开始写入\n,并且只覆盖所有文本文件。即使我用a打开它,它也不会进入我通过参数发出命令的地方 fclose(file); FILE *file_a = fopen("ex6.txt", "w"); fseek(file_a, -1, SEEK_END); puts("Write text to add:"); while((letter = getch

在代码中使用此fseek()函数时遇到问题。我写的文本并没有从我指出的点开始,我也不知道为什么。它应该从开始写入\n,并且只覆盖所有文本文件。即使我用
a
打开它,它也不会进入我通过参数发出命令的地方

   fclose(file);
    FILE *file_a = fopen("ex6.txt", "w");

    fseek(file_a, -1, SEEK_END);

    puts("Write text to add:");
    while((letter = getchar()) != '\n')
    {
        fputc(letter, file_a);
    };

发生了什么事?为什么不起作用?

导航到绝对值仅在以二进制模式打开文件时起作用。在文本模式下打开时,
fseek()
无法导航到文件中除0(文件开头)以外的绝对位置,尝试这样做将导致未定义的行为。但是,您可以导航到由
ftell()
返回的文件中的引用。原因是某些操作系统对某些字符的处理;一些实现允许它,但POSIX不强制它


我知道您在评论中解决了这个问题,这只是为了结束。

导航到绝对值仅在以二进制模式打开文件时有效。在文本模式下打开时,
fseek()
无法导航到文件中除0(文件开头)以外的绝对位置,尝试这样做将导致未定义的行为。但是,您可以导航到由
ftell()
返回的文件中的引用。原因是某些操作系统对某些字符的处理;一些实现允许它,但POSIX不强制它


我知道您在评论中解决了这个问题,这只是为了结束。

如果您想要文件的结尾,我希望您将
0
传递给fseek<代码>-1将在结尾前1个字节。是否尝试在靠近结尾的位置插入文件,而不是仅附加到结尾?很抱歉,信息丢失。我正在尝试添加文本,假设在结尾前有2个字符,那么想象一下这是我的文件内容:“hello\0”我想插入信息“hell | o\0”,覆盖“o\0”,然后在那里放上我自己的测试,比如“yeah”,最终的结果是:“hell yeah”。但这就像fseek不符合我的要求,即使我把引用放在正数中…你的平台是什么?也许这有关系?->“库实现不允许有意义地支持SEEK_END(因此,使用它的代码没有真正的标准可移植性)。”事实上,我是在“w+”模式下打开的,现在一切都好了。似乎它不支持简单的“w”或“a”。谢谢你们的回答,伙计们。这非常有帮助。如果您想要文件的结尾,我希望您希望将
0
传递给fseek<代码>-1将在结尾前1个字节。是否尝试在靠近结尾的位置插入文件,而不是仅附加到结尾?很抱歉,信息丢失。我正在尝试添加文本,假设在结尾前有2个字符,那么想象一下这是我的文件内容:“hello\0”我想插入信息“hell | o\0”,覆盖“o\0”,然后在那里放上我自己的测试,比如“yeah”,最终的结果是:“hell yeah”。但这就像fseek不符合我的要求,即使我把引用放在正数中…你的平台是什么?也许这有关系?->“库实现不允许有意义地支持SEEK_END(因此,使用它的代码没有真正的标准可移植性)。”事实上,我是在“w+”模式下打开的,现在一切都好了。似乎它不支持简单的“w”或“a”。谢谢你们的回答,伙计们。这很有帮助。