以下編程在'fputs'的第一個實例上崩潰,試圖將'fname'打印到Member_inf文件中。我也試圖打印一個常量字符串「abcdefg」,但它仍然失敗。到底什麼是做錯了?它似乎是文件的初始化。如果可能的話,請僅幫助解決'fputs'問題,我寧願嘗試任何其他人,因爲我遇到他們。fputs正在崩潰我的程序
#include<stdio.h>
#include<dos.h>
#include<time.h>
#include<conio.h>
FILE *Member_inf;
FILE *Admin_inf;
FILE *Book;
void delay(unsigned int mseconds);
struct meroDate
{
int mm,dd,yy;
};
char *newlinestring(char t[]);
int strilen(char t[]);
int main(){
int choice,age,contact;
char *member_fname=(char*)malloc(30);
char *member_lname=(char*)malloc(30);
char *fname=(char*)malloc(20);
char *lname=(char*)malloc(20);
char *address=(char*)malloc(60);
do{
printf("\xB1\xB2\xB1\xB2\xB1\xB2\xB1\xB2\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB2\xB1\xB2\xB1\xB2\xB1");
printf("\xB2\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1 WELCOME TO THE ST. JAGO HIGH SCHOOL LIBRARY SYSTEM ");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1");
printf("\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\xB1\n\n");
printf("\xDB\xDB\xDB\xDB\xB2 1:ADD MEMBER\n\n");
printf("\xDB\xDB\xDB\xDB\xB2 2:SEARCH EXISTING MEMBER\n\n");
printf("\xDB\xDB\xDB\xDB\xB2 3:EXIT\n\n");
printf("\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16");
printf("\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16");
printf("\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16");
time_t t;
time(&t);
printf("Date and time:%s\n\n\n\n",ctime(&t));
printf("Please enter your choice: ");
scanf("%d",&choice);
system("cls");
printf("You chose option %d\n\n",choice);
if (choice==3){
printf("Thank you for visiting St. Jago High School Library. \n");
}else if(choice==1){
printf("***************************** MEMBER REGISTRATION ******************************\n\n");
printf("Please enter first name: \n");
scanf("%s",&*fname);
printf("\nPlease enter last name: \n");
scanf("%s",&*lname);
printf("\nPlease enter age: \n");
scanf("%d",&age);
printf("\nPlease enter address: \n");
scanf("%s",&*address);
printf("\nPlease enter contact number: \n");
scanf("%d",&contact);
Member_inf=fopen("Members.txt","a");
fputs(fname,Member_inf); <======== /*HERE HERE HERE*/
fputs(lname,Member_inf);
fputs(age,Member_inf);
fputs(address,Member_inf);
fputs(contact,Member_inf);
fclose(Member_inf);
}else if (choice==2){
printf("***************************** MEMBER INFORMATION *******************************\n\n");
printf("Please enter members first name: \n");
scanf("%s",&member_fname);
printf("\nPlease enter members last name: \n");
scanf("%s",&member_lname);
}else if (choice!=1,2,3){
printf("wrong choice.Enter Again");
}
system("cls");
}while(choice!=0);
return 0;
}
void delay(unsigned int mseconds)
{
clock_t goal = mseconds + clock();
while (goal > clock());
}
char* newlinestring(char t[]){
t[strilen(t)+1]='\0';
return t;
}
int strilen(char t[]){
int i;
for(i=0;t[i]!=NULL;i++){}
return i;
}
第一個'fputs'緊跟在'Member_inf = fopen(「Members.txt」,「a」)後面;'你沒有檢查到它的成功。 –
不相關,但爲什麼不寫'char member_fname [30];'而不是'char * member_fname =(char *)malloc(30);'? –
我沒有製作字符數組,因爲當我使用fgets時,我將收集一個字符指針,並且我無法將它與數組進行比較,是的,我需要對它們進行比較。 –