我正在为学校创建一个“电话簿”程序。基本上,我必须让用户将其联系人的姓名和电话号码输入两个不同的数组。我没有考虑到这一点,但是在我不得不给用户一个选项,使其可以通过姓名或电话号码搜索联系人之后,我遇到了一些问题。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main()
{
int arraysize;
printf("How many phone numbers will you be entering: ");
scanf("%d", &arraysize);
int * phoneNumbers = malloc(arraysize);
char * names = malloc(arraysize);
for (int i = 0; i < arraysize; ++i)
{
printf("Please enter the name of person %d: ", i + 1);
scanf("%s", &names[i]);
printf("Please enter %s's phone number: ", &names[i]);
scanf("%d", &phoneNumbers[i]);
}
char * searchOption;
printf("Would you like to seach via name or phone number? ");
scanf("%s", &searchOption);
if (strcmp(searchOption, "name") == 0)
{
char * searchName;
int element;
bool stop = false;
while (stop = false)
{
searchName = NULL;
printf("\nPlease enter the name you wish to search for: ");
scanf("%s", &searchName);
for (int i = 0; i < arraysize; ++i)
{
if (strcmp(searchName, names[i]) == 0)
{
element = i;
stop = true;
break;
}
}
if (stop = false)
{
printf("\nname not found, please search again!");
}
}
}
我很确定它在strcmp()调用时崩溃了,但我不知道为什么
最佳答案
问题是,在
scanf("%s", &searchOption);
你这样做是错的。
你需要
首先将内存分配给
searchOption
指针(或使其成为数组)。将
searchOption
而不是&searchOption
传递给scanf()
。代码中的
char * searchName;
也会出现相同的问题。