それはまた私であり、進歩しています...私の最後の質問にコメントしてくれたすべての人に感謝したいと思います。それは非常に役に立ちました。これまでのところコンパイルできましたが、解決できない奇妙なバグがいくつかあります。
void addRecord(){//carries users input data
numRecs++;//increments numRecs by 1
struct record library; //this will hold info for user input
printf ("Please enter your first name:\n");
fgets(library.fName, sizeof(library.fName), stdin);
printf ("Please enter your last name:\n");
fgets(library.lName, sizeof(library.lName), stdin);
printf ("Please enter your hometown:\n");
fgets(library.hometown, sizeof(library.hometown), stdin);
printf("You entered %s for your first name.\n", library.fName);
printf("You entered %s for your last name.\n", library.lName);
printf("You entered %s for your hometown.\n", library.hometown);
struct record *myNewRecord;//creates a new struct pointer to store all the old data and new data
myNewRecord = malloc(numRecs * sizeof(struct record)); //allocates space to fit all old data plus the new struct data
if (myNewRecord == NULL)
{
fprintf(stderr,"Out of memory\n");
}
*myNewRecord = library;
fprintf(stderr, "You made it here!!\n");
これらは、ターミナルから取得した結果です。ソース コードの構文はすべて正しいように見えますが、何らかの理由で最初の名前 fgets がスキップされていることが問題です。また、プリントアウトするとなんとなくリターンを実行します。何が起こっているかわかりますか?PS スイッチのケースを削除し、メインに addrecord() しかない場合、これは行われません。
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ gcc lab222.c -o lab222
ubuntu@ubuntu:~$ ./lab222
Please select from the following:
1. Print all records.
2. Print number of records.
3. Print size of database.
4. Add record.
5. Delete record.
6. Print number of accesses to database.
7. Exit.
Enter a number 1-7:4
Please enter your first name:
Please enter your last name:
Don
Please enter your hometown:
Mega
You entered
for your first name.
You entered Don
for your last name.
You entered Mega
for your hometown.
You made it here!!