为什么我用fopen的w+写入并读取了数据后,就无法写入数据了
时间: 2024-01-24 10:02:22 浏览: 140
php操作XML、读取数据和写入数据的实现代码
可能是因为你没有使用 fseek() 函数将文件指针移动到正确的位置。在使用 w+ 访问模式打开文件时,文件指针默认指向文件的开头,因此在进行读写操作之前,需要将文件指针移动到正确的位置。
例如,如果你想从文件的开头读取数据,则需要使用 fseek() 函数将文件指针移动到文件开头:
```c
FILE *fp = fopen("filename.txt", "w+");
if(fp == NULL) {
printf("Failed to open file\n");
return -1;
}
// 写入数据
fprintf(fp, "Hello, World!\n");
// 将文件指针移动到文件开头
fseek(fp, 0, SEEK_SET);
// 读取数据
char buffer[100];
fgets(buffer, 100, fp);
printf("%s", buffer);
// 再次写入数据
fprintf(fp, "This is a test.\n");
fclose(fp);
```
在上面的示例中,我们在文件中写入了一行文本,然后使用 fseek() 函数将文件指针移动到文件开头,读取了文件中的数据,并再次向文件中写入了一行文本。注意,我们在使用 fseek() 函数时,将第二个参数设置为 0,将文件指针移动到文件开头。
阅读全文