C项目不能奏效

时间:2016-05-27 23:14:15

标签: c

我需要做一个项目,到目前为止我已经完成了这个:

{{1}}

我在这里做错了什么?

根本不起作用。

2 个答案:

答案 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();
    }
}

所做的更改:

  1. 如现有答案所述,Number++不正确。事实上,您根本不需要Number。您只需使用Counter

  2. 即可
  3. scanf()存在\n被视为下一个输入的问题,因此我在每getchar()之后添加scanf()来处理此问题。

  4. 我不确定你为什么要有realloc()陈述。我删除了它,现在我发布的这段代码片段在我的计算机上运行。