为什么c语言代码编译生成储存直接成了dat文件,将代码编译生成过后,储存下来直接成为了dat文件,我想生成txt文件,请问应该如何修改
你fopen的时候写的文件名时什么啊???你写的就是yezhu.dat吧,改成yezhu.txt就行啦
改后缀就是啊
你把代码贴出来
FILE *fp;
fp = fopen("yezhu.txt", "wt");
如果一个txt文件中含有几类信息,比如第一列是组名,第二列是对应数目,现在要将他们组内进行排序,写入新的txt文件中。
例如txt文件内容如下:
9000 12.32
9000 11.25
9000 13.36
9100 9.89
9100 6.32
9200 7.32
9200 8.14
//思路:先按第一列的分组信息分组,分完每一组后将这一组用插入排序排好序写入txt文档,再分下一个组
fp = fopen(file_name,"r");
num= 9000;
while(fgets(recbuffer,99,fp))
{
sscanf(recbuffer, "%d\t%lf", &gfre, &peakpow[i]);
while(gfre == fre)
{
strcpy(senbuffer[i], recbuffer);
sscanf(senbuffer[i], "%*d\t%lf", &peakpow[i++]);
if(fgets(recbuffer,99,fp))
sscanf(recbuffer, "%d\t%*lf", &gfre);
else
break;
}
InsertionSortChar(senbuffer, peakpow, i, filenum);
fre+=100;
i=0;
strcpy(senbuffer[i], recbuffer);
sscanf(senbuffer[i], "%*d\t%lf", &peakpow[i++]);
}
fclose(fp);
void InsertionSortChar(char A[][100], double peak[], int n, int filenum)
{
int j,p;
double tmp;
char tmp1[100];
static int title_flag = 1;
FILE *fp = NULL;
for(p = 1; p < n; p++)
{
tmp = peak[p];
strcpy(tmp1, A[p]);
for(j = p; j > 0 && peak[j-1] < tmp; j--)
{
memset(A[j], 0, 100);
strcpy(A[j], A[j-1]);
peak[j] = peak[j - 1];
}
peak[j] = tmp;
memset(A[j], 0, 100);
strncpy(A[j], tmp1, 100);
}
for(p = 0; p < n; p++)
{
fp = fopen(file_name,"a+");
fprintf(fp, "%s", A[p]);
fclose(fp);
}
}
写入文件也可以用fputs(),使用fopen、fprintf、fclose组合的原因有二:
1.每写一行打开或关闭 文件,则在程序运行过程中可以自己打开对应txt文档看进行到了哪一步。如果不进行打开关闭的操作,在程序运行时打开文件时,会无响应。
2.同样的循环中使用fputs,当行数较多时输出的txt文件中会漏掉几行,还没有找到原因。
但是,每次打开关闭文件会消耗很多时间。