#include <stdio.h> #include <string.h> #include <stdlib.h> struct charstr { char str[20]; } a[20]; int main() { int i, j, t, b[20], flag = 0; char c[20][20]; FILE* fp = fopen("D:\\NewFound\\wenjian a.txt", "r"); if (fp == NULL) { printf("没有该文件!"); return 0; } for (i = 0; i <= 19; i++) { fgets(a[i].str, 20, fp); printf("%s", a[i].str); b[i] = atoi(a[i].str); } for (i = 0; i <= 19; i++) { // 立flag if (b[i] == 0) { flag = i - 1; break; } } for (i = 0; i <= flag; i++) { for (j = 0; j <= flag - 1; j++) { if (b[j] >= b[j + 1]) { t = b[j], b[j] = b[j + 1], b[j + 1] = t; } } } printf("\n排序后:\n"); rewind(fp); for (i = 0; i <= flag; i++) { printf("%d\n", b[i]); itoa(b[i], c[i], 10); fputs(c[i], fp); } fclose(fp); return 0; }在该代码中,怎么让文本文件保持一行一个数字
时间: 2024-04-15 15:31:43 浏览: 90
要让文本文件保持一行一个数字,可以在写入文件时,每个数字后面添加一个换行符 `\n`。
以下是修改后的代码:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct charstr {
char str[20];
} a[20];
int main() {
int i, j, t, b[20], flag = 0;
char c[20][20];
FILE* fp = fopen("D:\\NewFound\\wenjian a.txt", "r");
if (fp == NULL) {
printf("没有该文件!");
return 0;
}
for (i = 0; i <= 19; i++) {
fgets(a[i].str, 20, fp);
printf("%s", a[i].str);
b[i] = atoi(a[i].str);
}
for (i = 0; i <= 19; i++) { // 立flag
if (b[i] == 0) {
flag = i - 1;
break;
}
}
for (i = 0; i <= flag; i++) {
for (j = 0; j <= flag - 1; j++) {
if (b[j] >= b[j + 1]) {
t = b[j], b[j] = b[j + 1], b[j + 1] = t;
}
}
}
printf("\n排序后:\n");
rewind(fp);
for (i = 0; i <= flag; i++) {
printf("%d\n", b[i]);
itoa(b[i], c[i], 10);
fputs(c[i], fp);
fputs("\n", fp); // 添加换行符
}
fclose(fp);
return 0;
}
```
现在,每个数字在写入文件时都会自动添加一个换行符,保证每个数字占据一行。
阅读全文