'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 =(char *)malloc(30);'の代わりに、 'char member_fname [30];' –
私は文字配列を作成しませんでした。なぜなら、私が文字ポインタを収集し、配列と比較することができないので、それらを比較する必要があるからです。 –