#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct yonghu//用戶資訊
{
char password[7];//用戶密碼
char name[7];//用戶名
char id[20];//用戶身份證
}users[500];
void revise();//修改資訊
int main()
{
revise();
return 0;
}
void revise()
{
int i;
char name2[7],password2[7],id2[20];
char name3[7];
printf("請輸入要修改的用戶名:\n");
scanf("%s",name3);
printf("請輸入修改的用戶名:\n");
scanf("%s",name2);
printf("請輸入修改的密碼:\n");
scanf("%s",password2);
printf("請輸入修改的身份證:\n");
scanf("%s",id2);
FILE *fp;
fp=fopen("用戶資訊.txt","a");
for(i=0;i<5;i++)
{
if(strcmp(users[i].name,name3[7])==0)
{
fscanf(fp,"%s %s %s",users[i].name,users[i].password,users[i].id);
printf("用戶名:%s \n",users[i].name);
printf("密碼:%s \n",users[i].password);
printf("身份證:%s\n",users[i].id);
}
break;
}
i--;
strcpy(users[i].name,name2);
strcpy(users[i].password,password2);
strcpy(users[i].id,id2);
fprintf(fp,"%s %s %s",name2[7],password2[7],id2[7]);
// fputs(name2[7],fp);
// fputs(password2[7],fp);
// fputs(id2[20],fp);
printf("修改成功!");
fclose(fp);
}
uj5u.com熱心網友回復:
for只運行1次后break出來了。fprintf里name2[7]和后面的幾個陣列不對,應該用陣列名。把[7]刪了。
uj5u.com熱心網友回復:
謝謝,可是改了之后檔案里的內容還是沒改
uj5u.com熱心網友回復:
既然樓主急于落實檔案訪問,那其他錯誤就不提了。檔案打開必須要檢測是否失敗,另外
檔案是不能讀了就寫的
即使你的打開方式帶加號
讀操作寫操作之間也必須有定位操作,對于文本,就rewind吧
也就是說,如果你不想兩次打開
那就得帶加號打開
全讀完
rewind
全寫完
關閉
綜上,醬紫。
uj5u.com熱心網友回復:
fp=fopen("用戶資訊.txt","a");這 是讀檔案,寫檔案要用fp=fopen("用戶資訊.txt","w");轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245433.html
標籤:C語言
上一篇:C語言 成績錄入
下一篇:求助:C語言萬年歷農歷的實作
