在c中显示结构中的数字和字符串 #包括 #包括 结构目录{ 字符名; 长整数; 内特房号; 查街;; }; 内部主(空) { 结构目录联系人; 结构目录*answer1、*answer2、*answer3、*answer4; 答案; printf(“欢迎使用电话号码簿。\n\n请输入联系人的姓名。\n”); scanf(“%s”、&contact.Name); printf(“请输入联系人的号码。\n”); scanf(“%ld”、&contact.Number); printf(“请输入联系人的地址。\n”); scanf(“%d%s”、&contact.HouseNumber、&contact.street); 回答1=&contact; 回答2=&联系; 回答3=&联系; 回答4=&联系; printf(“您想获取您的联系人信息吗?输入‘是’或‘否’。\n”); scanf(“%s”和“应答”); if(strcmp(&回答“是”)==0{ printf(“%s\n”,&answer1->Name); printf(“%ld\n”,应答2->Number); printf(“%d”,答案3->门牌号); printf(“%s”、&answer4->street); } if(strcmp(&回答“否”)==0){ printf(“感谢您使用电话簿。\n”); } }
我正在尝试用C语言制作一个联系人程序。我希望该程序能够打印用户的住址。我在结构中有“HouseNumber”变量和“street”变量,将“answer3”设置为int变量以显示“HouseNumber”,将“answer4”设置为char变量以显示“street”。我希望他们一起用一个字符串打印用户的地址,但当我运行程序并输入“是”以在输入门牌号和街道后显示联系人信息时,程序崩溃,显示lldb时出现错误线程。看起来一切都是对的,因为我的编译器说代码没有问题,但它崩溃了。谁能帮我一下吗在c中显示结构中的数字和字符串 #包括 #包括 结构目录{ 字符名; 长整数; 内特房号; 查街;; }; 内部主(空) { 结构目录联系人; 结构目录*answer1、*answer2、*answer3、*answer4; 答案; printf(“欢迎使用电话号码簿。\n\n请输入联系人的姓名。\n”); scanf(“%s”、&contact.Name); printf(“请输入联系人的号码。\n”); scanf(“%ld”、&contact.Number); printf(“请输入联系人的地址。\n”); scanf(“%d%s”、&contact.HouseNumber、&contact.street); 回答1=&contact; 回答2=&联系; 回答3=&联系; 回答4=&联系; printf(“您想获取您的联系人信息吗?输入‘是’或‘否’。\n”); scanf(“%s”和“应答”); if(strcmp(&回答“是”)==0{ printf(“%s\n”,&answer1->Name); printf(“%ld\n”,应答2->Number); printf(“%d”,答案3->门牌号); printf(“%s”、&answer4->street); } if(strcmp(&回答“否”)==0){ printf(“感谢您使用电话簿。\n”); } },c,C,我正在尝试用C语言制作一个联系人程序。我希望该程序能够打印用户的住址。我在结构中有“HouseNumber”变量和“street”变量,将“answer3”设置为int变量以显示“HouseNumber”,将“answer4”设置为char变量以显示“street”。我希望他们一起用一个字符串打印用户的地址,但当我运行程序并输入“是”以在输入门牌号和街道后显示联系人信息时,程序崩溃,显示lldb时出现错误线程。看起来一切都是对的,因为我的编译器说代码没有问题,但它崩溃了。谁能帮我一下吗 #inc
#include <stdio.h>
#include <string.h>
struct Directory {
char Name;
long int Number;
int HouseNumber;
char street;
};
int main(void)
{
struct Directory contact;
struct Directory *answer1, *answer2, *answer3, *answer4;
char answer;
printf("Welcome to Telephone Directory.\n\nPlease enter the name of the contact.\n");
scanf("%s", &contact.Name);
printf("Please enter the number of the contact.\n");
scanf("%ld", &contact.Number);
printf("Please enter the address of the contact.\n");
scanf("%d %s", &contact.HouseNumber, &contact.street);
answer1 = &contact;
answer2 = &contact;
answer3 = &contact;
answer4 = &contact;
printf("Would you like to obtain information on your contact? Enter 'yes' or 'no'.\n");
scanf("%s", &answer);
if (strcmp(&answer, "yes")==0) {
printf("%s\n", &answer1->Name);
printf("%ld\n", answer2->Number);
printf("%d", answer3->HouseNumber);
printf("%s", &answer4->street);
}
if (strcmp(&answer, "no")==0) {
printf("Thank you for using Telephone Directory.\n");
}
}
内干管:
struct Directory {
char * Name;
long int Number;
int HouseNumber;
char * street;
};
然后您可以以您的姓名/街道等进行复制。因为Name是char*,所以不使用地址,只需将指针传递给scanf即可。这将用用户输入的字符串填充malloc的内存 当您执行
scanf(“%s”和&answer)时代码>
您正在将用户的输入写入char答案代码>scanf的参数需要有足够的空间来容纳整个字符串加上一个空字节。尝试以下方法:
struct Directory Contact;
Contact.Name = malloc(sizeof(char * sizeOfName));
scanf("%s", contact.Name);
这假设输入永远不会超过256个字符,但在这样一个简单的程序中似乎是合理的。请注意,gcc支持非标准的%a
,如果您传入char*
,它将为您分配一个字符串
当你试图存储字符串时,你需要确保有足够的空间来存储你放在那里的数据,比如在字典中只保存一个字符,否则你将溢出,并在以后可能需要的其他内存上跺脚。我在你的代码中观察到的错误是,你创建了名称,street和answer变量为char,但试图使用%s在其中存储字符串,导致崩溃。在这些地方,您必须使用char*或character数组
char answer[256];
修改后的代码如下所示
char *name //(or) char name[15]
#包括
结构目录{
字符名[20];
长整数;
内特房号;
查尔街[20];
};
int main(int argc,char*argv[])
{
结构目录联系人;
结构目录*answer1、*answer2、*answer3、*answer4;
答案[4];
printf(“欢迎使用电话号码簿。\n\n请输入联系人的姓名。\n”);
scanf(“%s”,联系人名称);
printf(“请输入联系人的号码。\n”);
scanf(“%ld”、&contact.Number);
printf(“请输入联系人的地址和街道。\n”);
scanf(“%d%s”、&contact.HouseNumber、contact.street);
回答1=&contact;
回答2=&联系;
回答3=&联系;
回答4=&联系;
printf(“输入是或否”);
scanf(“%s”,答案);
如果(strcmp(回答“是”)==0{
printf(“%s\n”,应答1->Name);
printf(“%ld\n”,应答2->Number);
printf(“%d\n”,应答3->HouseNumber);
printf(“%s”,回答4->street);
}
否则{
printf(“感谢您使用电话簿。\n”);
}
返回0;
}
您的姓名必须超过1个字符。将“字符串”设置为char*,或使用字符串库。然后在每个结构中,您必须为字符串指定malloc size,并使用结构中的指针指向分配的内存。您的结构是错误的。它包含名称和街道的字符,而不是字符串。您应该将其设置为字符数组(即char Name[256]),或者将其设置为char*指针,然后在分配时使用malloc。
#include <stdio.h>
struct Directory {
char Name[20];
long int Number;
int HouseNumber;
char street[20];
};
int main(int argc, char *argv[])
{
struct Directory contact;
struct Directory *answer1, *answer2, *answer3, *answer4;
char answer[4];
printf("Welcome to Telephone Directory.\n\nPlease enter the name of the contact.\n");
scanf("%s", contact.Name);
printf("Please enter the number of the contact.\n");
scanf("%ld", &contact.Number);
printf("Please enter the address and street of the contact.\n");
scanf("%d %s", &contact.HouseNumber, contact.street);
answer1 = &contact;
answer2 = &contact;
answer3 = &contact;
answer4 = &contact;
printf("Enter yes r no");
scanf("%s",answer);
if (strcmp(answer,"yes")==0) {
printf("%s\n", answer1->Name);
printf("%ld\n", answer2->Number);
printf("%d\n", answer3->HouseNumber);
printf("%s", answer4->street);
}
else {
printf("Thank you for using Telephone Directory.\n");
}
return 0;
}