English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我是程式初學者 請各位大大幫我解決問題
謝謝


一.我想把資料儲存 可是怎麼用都用不好 還會出現亂碼
請各位大大幫我修正


typedef struct {
char stud_years[10];/*系級*/
char stud_si[20];/*學系*/
char stud_name[30];/*姓名*/
char stud_cellphone[30];/*手機*/
char stud_birthday[10];/*生日*/
} struct_stud;


FILE *file_ptr;
struct_stud stud_rec;

int i,a;

if ((file_ptr = fopen("data.txt", "a"))==NULL) {
printf("Error in Opening files... Program End\n");
}

printf("●請輸入欲輸入的會員數\n");
scanf("%d",&a);
printf("\n");


while(!feof(stdin)){
for(i=1;i<=a;i++){
printf("●第%d位會員之資料\n",i);
printf("\n 請輸入會員之系級:");
scanf("%s",&stud_rec.stud_years);
fprintf(file_ptr,"%s",stud_rec.stud_years);

printf("\n 請輸入會員之學系:");
fflush(stdin);
scanf("%s",&stud_rec.stud_si);
fprintf(file_ptr,"%s",stud_rec.stud_si);


printf("\n 請輸入會員之姓名:");
fflush(stdin);
gets(stud_rec.stud_name);
fprintf(file_ptr,"%s",stud_rec.stud_name);

printf("\n 請輸入會員之手機號碼:");
scanf("%s",&stud_rec.stud_cellphone);
fprintf(file_ptr,"%s",stud_rec.stud_cellphone);

printf("\n 請輸入會員之生日:");
scanf("%s",&stud_rec.stud_birthday);
fprintf(file_ptr,"%s",stud_rec.stud_birthday);

printf("\n");
fclose(file_ptr);
}


二.如何輸入自己想要的檔名
例:(螢幕顯示)
請輸入檔名:ABC
然後儲存的檔名就是ABC

2007-06-11 12:57:54 · 2 個解答 · 發問者 ? 1 in 電腦與網際網路 程式設計

2 個解答

//Power by Visual Studio 2005
#include
#include
#include
#ifndef _MAX_ENV
#define _MAX_ENV 32767
#endif
struct student{
char stud_year[10];/*系級*/
char stud_system[20];/*學系*/
char stud_name[30];/*姓名*/
char stud_tel[30];/*手機*/
char stud_birth[10];/*生日*/
};
int main(int argc, char* argv[]){
//==========START==========//
struct student* p;
int num,i;
FILE *ftxt;
char filename[_MAX_ENV],member[_MAX_ENV];
printf("Input output of file name: "),scanf("%s",filename);
if((ftxt=fopen(filename,"w"))!=NULL){
printf("Input the number of members: "),scanf("%d",&num);
for(i=0;i p=(struct student*)malloc(sizeof(struct student));
printf("Member %d\n",i+1);
member[0]=i+1+48,member[1]='\0',strcat(member,". ");
printf("Input Year: "),scanf("%s",p->stud_year);
strcat(member,p->stud_year),strcat(member,"\t");
printf("Input System: "),scanf("%s",p->stud_system);
strcat(member,p->stud_system),strcat(member,"\t");
printf("Input Name: "),scanf("%s",p->stud_name);
strcat(member,p->stud_name),strcat(member,"\t");
printf("Input Tel: "),scanf("%s",p->stud_tel);
strcat(member,p->stud_tel),strcat(member,"\t");
printf("Input Birth: "),scanf("%s",p->stud_birth);
strcat(member,p->stud_birth),strcat(member,"\n");
fputs(member,ftxt),free(p);
}
fclose(ftxt);
}
//==========END==========//
system("PAUSE");
return 0;
}

2007-06-11 18:07:09 · answer #1 · answered by Big_John-tw 7 · 0 0

看來是fclose的使用時機不對,把他移到main的結束之前就可以了

2007-06-11 14:25:46 · answer #2 · answered by ? 4 · 0 0

fedest.com, questions and answers