#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","rt+"); 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); }在以上代码中,请说出怎么将输出结果覆盖文件原来的数据并且格式保持保持一致,并且给出代码
时间: 2024-04-16 20:28:14 浏览: 14
要将输出结果覆盖文件原来的数据并保持格式一致,可以按照以下步骤进行操作:
1. 在打开文件时,将文件指针定位到文件开头,使用"r+"模式代替"rt+"模式。这样可以进行读写操作。
2. 在输出结果时,使用fprintf函数将结果写入文件中,而不是使用fputs函数。使用fprintf可以格式化输出数据。
3. 在每次写入新的结果之前,先将文件内容清空。可以使用ftruncate函数将文件截断为0字节。
下面是修改后的代码:
```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");
// 清空文件内容
ftruncate(fileno(fp), 0);
// 将结果写入文件
for (i = 0; i <= flag; i++) {
printf("%d\n", b[i]);
itoa(b[i], c[i], 10);
fprintf(fp, "%s\n", c[i]);
}
fclose(fp);
}
```
注意:以上代码中使用了`itoa`函数,该函数在标准C中并不存在。你可能需要自己实现该函数或使用其他方法将整数转换为字符串。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)