Tag: fseek

附加到C中的文件末尾

我正在尝试将文件myfile.txt的内容追加到c中第二个文件myfile2.txt的末尾。 我可以复制内容,但我找不到附加的方法。 这是我的代码: FILE *pFile; FILE *pFile2; char buffer[256]; pFile=fopen(“myfile.txt”, “r”); pFile2=fopen(“myfile2.txt”, r+); if(pFile==NULL) { perror(“Error opening file.”); } else { while(!feof(pFile)) { if(fgets(buffer, 100, pFile) != NULL) { fseek(pFile2, -100, SEEK_END); fprintf(pFile2, buffer); } } fclose(pFile); fclose(pFile2); 我不认为我正在使用fseek,但我想要做的是调用fseek将指针放在文件的末尾,然后写入该指针的位置,而不是在该指针的开头。文件。 这是正确的方法吗?

使用fseek和ftell来确定文件的大小有漏洞吗?

我已经阅读过post,展示了如何使用fseek和ftell来确定文件的大小。 FILE *fp; long file_size; char *buffer; fp = fopen(“foo.bin”, “r”); if (NULL == fp) { /* Handle Error */ } if (fseek(fp, 0 , SEEK_END) != 0) { /* Handle Error */ } file_size = ftell(fp); buffer = (char*)malloc(file_size); if (NULL == buffer){ /* handle error */ } 我即将使用这种技术但后来遇到了描述潜在漏洞的链接 。 该链接建议使用fstat。 任何人都可以评论这个吗?

使用fseek回溯

使用fseek来回溯字符fscanf操作是否可靠? 例如,如果我只有fscanf-ed 10个字符,但我想回溯10个字符,我可以只是fseek(infile,-10,SEEK_CUR)? 对于大多数情况它可以工作,但我似乎有字符^ M的问题。 显然fseek将其注册为char但fscanf不会注册它,因此在我之前的示例中,包含^ M的10个char块将需要fseek(infile,-11,SEEK_CUR)。 fseek(infile,-10,SEEK_CUR)会使它缩短1个字符。 为什么会这样? 编辑:我在文本模式下使用fopen

fseek vs倒带?

我注意到有两种方法可以返回到文件的开头 FILE *fp = fopen(“test.bin”, “r”) fseek(fp, 0, SEEK_END); rewind(fp); 和 FILE *fp = fopen(“test.bin”, “r”) fseek(fp, 0, SEEK_END); fseek(fp, 0, SEEK_SET); 这些方法之间有什么区别?

在“a”(追加)模式下打开文件时,fseek不起作用

FILE* f = fopen(“rajat”, “w”); fputs(“sometext”, f); fseek(f, 6, SEEK_SET); fputs(“is a”, f); fclose(f); 成功回归:“someteis a” 但 FILE* f = fopen(“rajat”, “a”); fputs(“sometext”, f); fseek(f, 6, SEEK_SET); fputs(“is a”, f); fclose(f); 不起作用。 返回“sometextis a” 有什么想法吗? 对此有什么解决方案,以便第二个代码输出与第一个完全相同?