2013-06-25 23 views
1

我无法使这个fseek()函数在我的代码中工作。我写的文字并不是从我指出的角度开始的,我不知道为什么。它应该从\ n开始写入,它只是覆盖所有的文本文件。即使我打开它a它只是不会去我通过参数命令。文件程序 - fseek不能正常工作

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); 
    }; 

发生了什么事?为什么不工作?

+0

如果你想要文件的结尾,我希望你想通过'0'fseek。在结束之前'-1'将是1个字节。 –

+0

你是否试图在文件末尾插入文件而不是追加到最后? –

+0

对不起,信息是错过的。我想添加文本,可以在结束前说2个字符,所以想象这是我的文件内容:“hello \ 0” 我想插入信息“hell | o \ 0”,覆盖“o \ 0”并把它放在我自己的测试,如“是啊”,最终产品将是:“地狱是啊”。 但它就像fseek不符合我的要求,即使我把参考数字设置为正数...... –

回答

1

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

我知道你在评论中解决了这个问题,这只是为了关闭。