我需要做一个项目,到目前为止我已经完成了这个:
{{1}}
我在这里做错了什么?
根本不起作用。
答案 0 :(得分:3)
每次获取()
后,您都不需要使用Number ++代码中也有一些错误,正确的代码看起来像。请注意,在阅读每个元素之前,我们不需要每次都重新分配数组。
另外使用gets()是不安全的,如果你开始使用scanf(),最好继续使用它。
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char Name[10];
char Address[10];
long Phone_number;
}Phonebook;
int main() {
int Counter, Number = 0;
long Number_of_residents;
Phonebook * Information;
scanf("%ld", &Number_of_residents);
Information = (Phonebook*)malloc(Number_of_residents * sizeof(Phonebook));
for (Counter = 0; Counter < Number_of_residents; Counter++) {
scanf("%10s", Information[Counter].Name);
scanf("%10s", Information[Counter].Address);
scanf("%ld", &Information[Counter].Phone_number);
}
return 0;
}
答案 1 :(得分:1)
试试这个:
#include<stdio.h>
#include<malloc.h>
typedef struct
{
char Name[10];
char Address[10];
long Phone_number;
}Phonebook;
void main()
{
int Counter;
long Number_of_residents;
scanf("%ld", &Number_of_residents);
getchar();
Phonebook *Information = (Phonebook*)malloc(Number_of_residents * sizeof(Phonebook));
for (Counter = 0; Counter < Number_of_residents; Counter++)
{
gets(Information[Counter].Name);
gets(Information[Counter].Address);
scanf("%ld", &Information[Counter].Phone_number);
getchar();
}
}
所做的更改:
如现有答案所述,Number++
不正确。事实上,您根本不需要Number
。您只需使用Counter
。
scanf()
存在\n
被视为下一个输入的问题,因此我在每getchar()
之后添加scanf()
来处理此问题。
我不确定你为什么要有realloc()
陈述。我删除了它,现在我发布的这段代码片段在我的计算机上运行。