私のプログラムは、ユーザーがファイルをインポートするかどうかを尋ねることから始まります。ユーザーが「はい」を選択した場合、使用したいファイルの名前を指定するように求められます。ファイルからの入力を取得して、それに応じて表示することができないようです。基本的に、ファイルから名前と番号を取得して、アプリケーションの show phonebook 部分に入力しようとしています。現時点では、ファイルを取り込んでいるように見えますが、何も保存していません。これが私の問題に対処する3つの主な機能です。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define BUFFSIZE 500
//Structure for contacts. These are now pointers.
typedef struct friends_contact{
char *First_Name;
char *Last_Name;
char *home;
char *cell;
}fr;
//Function declarations
void menu(fr*friends ,int* counter,int i,char buffer[]);
void setFirst(fr*,int *,int i,char buffer[]);
char getFirst(fr*,int i);
void setLast(fr*friends, int* counter, int i,char buffer[]);
char getLast(fr*friends , int i);
void setHome(fr*friends, int* counter, int i,char buffer[]);
char getHome(fr*friends, int i);
void setCell(fr*friends, int* counter, int i,char buffer[]);
char getCell(fr*friends, int i);
void add_contact(fr*friends,int* counter,int i,char buffer[]);
void print_contact(fr*friends ,int* counter, int i,char user_entry3[50]);
char delete_contact(fr*friends ,int* counter, int i);
int show_contact(fr*friends ,int* counter, int i);
void file(fr*friends ,int* counter, int i,char user_entry3[50]);
char file2 (fr*friends ,int* counter, int i,char user_entry3[50]);
int main() {
fr friends[5];
char buffer[BUFFSIZE];
int counter=0;
int i=0;
menu(friends, &counter,i,buffer);
getch();
return 0;
}
void menu(fr*friends,int* counter, int i,char buffer[]) {
int user_entry=0;
int user_entry2=0;
char user_entry3[50]={'\0'};
printf("Welcome! Would you like to import a file? (1)Yes or (2) No");
scanf("%d",&user_entry);
if(user_entry==1)
{
printf("please enter the name of the file");
scanf("%s",user_entry3);
file2(friends ,counter, i,user_entry3);
}else;
do{
int result;
printf("\nPhone Book Application\n");
printf("1) Add friend\n2) Delete friend\n3) Show a friend\n4) Show phonebook\n5)Exit\n");
scanf("%d", &user_entry);
if(user_entry==1)
{
add_contact(friends,counter,i,buffer);
}
if(user_entry==2)
{
delete_contact(friends ,counter,i);
}
if(user_entry==3)
{
result=show_contact(friends ,counter,i);
if(result==0)
{
printf("\nName not Found\n");
}else{
result;
}
}
if(user_entry==4)
{
print_contact(friends, counter,i,user_entry3);
}
}while(user_entry!=5);
if(user_entry==5)
{
printf("Would you like to save entries to a file? (1)yes or (2) no");
scanf("%d",&user_entry2);
if(user_entry2 == 1)
{
printf("Please name your file");
scanf("%s",user_entry3);
file(friends, counter,i,user_entry3);
printf("Goodbye!");
}else if(user_entry2 == 2)
{
printf("Goodbye!");
}
}
これは、ファイルを開いて情報を取得しようとしている関数です。
void file2(fr*friends ,int* counter, int i, char user_entry3[50])
{
FILE *read;
read=fopen(user_entry3,"r");
for( i = 0; i < *counter; i++)
{
fscanf(read,"%s",friends[i].First_Name);
fscanf(read,"%s ",friends[i].Last_Name);
fscanf(read,"%s",friends[i].home);
fscanf(read,"%s",friends[i].cell);
}
fclose(read);
}
最後に、ファイルから電話帳に日付を追加しようとしています。
void print_contact(fr*friends ,int* counter, int i,char user_entry3[50])
{
for( i = 0; i < *counter; i++)
if (strlen(friends[i].First_Name) && strlen(friends[i].Last_Name)&&strlen(friends[i].home)&& strlen(friends[i].cell ))
{
file2(friends,counter,i,user_entry3);
getFirst(friends, i);
getLast(friends, i);
getHome(friends, i);
getCell(friends, i);
}
}
私の論理は間違っているかもしれませんが、これを理解できないようです。必要に応じて残りのコードを投稿できますが、単純な間違いを犯しており、提供したものを見て誰かがそれを見つけられることを願っています.