一个字符串的文件保存问题。急。。#include string.h#include stdio.h#include malloc.h#include stdl
一个字符串的文件保存问题。急。。
#include "string.h"
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
char a[20];
int main(){
FILE *fp;
char *q;
fp=fopen("schoolGPS.txt","r" );
fread(&a,sizeof(a),1,fp);
printf("%s",a);
scanf("%s",a);
q=a;
q=(char*)malloc(sizeof(a));
strcpy(q,a);
printf("%s",q);
fp=fopen("schoolGPS.txt","w");
fwrite(&q,sizeof(a),1,fp);
fclose(fp);
return 0;
}
[解决办法]
fwrite(&q,sizeof(a),1,fp);
----> fwrite(q,sizeof(a),1,fp);
q本身已经是地址了。
而且字符串的文件操作感觉用fprintf/fscanf比较好。
[解决办法]
没看懂要干嘛?strcpy(q,a);也不知道有什么用途。
代码改了下。malloc要free等。
- C/C++ code
#include "string.h"#include "stdio.h" #include "stdlib.h"char a[20];int main(){ FILE *fp; char *q; fp=fopen("schoolGPS.txt","r" ); fread(a,sizeof(a),1,fp); fclose(fp); printf("%s\n",a); scanf("%s",a); q=(char*)malloc(sizeof(a)); strcpy(q,a); printf("%s\n",q); fp=fopen("schoolGPS.txt","w"); fwrite(q,strlen(q),1,fp); free(q); fclose(fp); return 0;}
[解决办法]
按楼上的,以R+方式打开一次就行了。打开两次就要关闭两次文件。1楼说的也是个问题,每次写时,文件里数据越来越长,会倒置a数组读不完,按我理解,读的数据应该可以写入文件的,可是不是的,我也不清楚啦
修改后代码:
#include "string.h"
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
char a[20];
int main(){
FILE *fp;
char *q;
fp=fopen("schoolGPS.txt","r+" );
fread(a,sizeof(a),1,fp);
printf("%s",a);
printf("请输入新的字符串:");
scanf("%s",a);
q=a;
q=(char*)malloc(sizeof(a));
strcpy(q,a);
printf("%s",q);
fwrite(q,strlen(q),1,fp);
fclose(fp);
return 0;
} 