fwrite按行写数据
时间: 2023-07-03 14:12:41 浏览: 45
`fwrite`函数是按照二进制数据块写入文件数据的,无法直接按行写入数据。如果想要按行写入数据,可以采用以下两种方法:
1. 逐个字符写入,遇到换行符则表示写完一行。
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[1024];
int i = 0;
fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
fgets(buffer, sizeof(buffer), stdin); // 从标准输入读取一行数据
while (buffer[i] != '\0') {
if (buffer[i] == '\n') {
fputc(buffer[i], fp);
i = 0;
} else {
fputc(buffer[i], fp);
i++;
}
}
fclose(fp);
return 0;
}
```
在这个示例中,我们使用 `fgets` 函数从标准输入中读取一行数据,逐个字符写入文件中,每当遇到一个换行符就表示写完了一行数据,因此需要在写入换行符后将计数器 `i` 清零,以便写入下一行数据。
2. 使用 `fprintf` 函数写入整行数据。
```c
#include <stdio.h>
int main() {
FILE *fp;
char buffer[1024];
fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return 1;
}
fgets(buffer, sizeof(buffer), stdin); // 从标准输入读取一行数据
fprintf(fp, "%s", buffer);
fclose(fp);
return 0;
}
```
在这个示例中,我们使用 `fgets` 函数从标准输入中读取一行数据,使用 `fprintf` 函数将整行数据写入文件中。需要注意的是,`fprintf` 函数不会自动写入换行符,因此需要在格式化字符串中加入 `\n`,以便写入换行符。