五星上将老汤姆 发表于 2019-8-11 12:32

新人C语言简单求教!第一次发帖望通过

最近在自学C语言,小白求教,大神勿喷
以下是我做的一个书上例题的C语言小程序,
利用结构体编写一个通讯录,输入姓名电话,然后输出这些信息。
我做了一点改变,struct notebook man;,程序本来是struct notebook man,(定义#define NUM 10).
我想输入人数,来确定通讯录中的人数(例题中是10人)。这里是什么问题呢??求教!!!
输出错误如下:
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(12) : error C2143: syntax error : missing ';' before 'type'
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(16) : error C2065: 'man' : undeclared identifier
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(16) : error C2109: subscript requires array or pointer type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(16) : error C2224: left of '.name' must have struct/union type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(16) : error C2198: 'gets' : too few actual parameters
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(18) : error C2109: subscript requires array or pointer type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(18) : error C2224: left of '.num' must have struct/union type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(18) : error C2198: 'gets' : too few actual parameters
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(22) : error C2109: subscript requires array or pointer type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(22) : error C2224: left of '.name' must have struct/union type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(22) : error C2109: subscript requires array or pointer type
D:\软件学习\c语言\2019.7暑假\结构体通讯录.c(22) : error C2224: left of '.num' must have struct/union type
执行 cl.exe 时出错.


结构体通讯录.obj - 1 error(s), 0 warning(s)



#include<stdio.h>
struct notebook
{
        char name;
        char num;
};
main()
{
        int n,i;
        printf("请输入人数:");
        scanf("%d",&n);
        struct notebook man;
        for(i=0;i<n;i++)
        {
                printf("请输入姓名:\n");
                        gets(man.name);
                        printf("请输入电话:\n");
                        gets(man.num);
        }
        for(i=0;i<n;i++)
        {
                printf("姓名为:%s\t\t电话为%s\n",man.name,man.num);
        }


}

linzhe66 发表于 2019-8-11 12:50

你怎么在这问编程问题,去专业的社区讨论啊   csdn

ZCShou 发表于 2019-8-11 13:10

struct notebook man; 这叫变长数组,需要至少 C99 规范才支持!但是世界上 完整支持C99的编译器很少,大多数都是部分支持 C99 特性

梦爱 发表于 2019-8-11 13:47

#include<stdio.h>
struct notebook
{
      char name;
      char num;
};
main()
{
      int n,i;
      printf("请输入人数:");
      scanf("%d",&n);
      struct notebook *man = (struct notebook*)malloc(sizeof(struct notebook) * n);
      for(i=0;i<n;i++)
      {
                printf("请输入姓名:\n");
                gets(man.name);
                printf("请输入电话:\n");
                gets(man.num);
      }
      for(i=0;i<n;i++)
      {
                printf("姓名为:%s\t\t电话为%s\n",man.name,man.num);
      }
       free(man);

}

试一下吧 我也不确定对不对 直接改的 没测试

五星上将老汤姆 发表于 2019-8-11 14:44

linzhe66 发表于 2019-8-11 12:50
你怎么在这问编程问题,去专业的社区讨论啊   csdn

嗯,多谢我去看看

五星上将老汤姆 发表于 2019-8-11 14:46

ubuntu 发表于 2019-8-11 12:56
syntax error : missing ';' before 'type'
这种错误可能是丢了分号,简单看代码似乎没少,如果是标红的一 ...

我用的是vc++6.0,貌似是不支持c99{:1_925:},所以不行,多谢啦

五星上将老汤姆 发表于 2019-8-11 14:47

ZCShou 发表于 2019-8-11 13:10
struct notebook man; 这叫变长数组,需要至少 C99 规范才支持!但是世界上 完整支持C99的编译器很少, ...

嗯嗯,明白了,多谢多谢

五星上将老汤姆 发表于 2019-8-11 14:48

梦爱 发表于 2019-8-11 13:47
#include
struct notebook
{


多谢多谢

cosct 发表于 2019-8-11 15:37

五星上将老汤姆 发表于 2019-8-11 14:46
我用的是vc++6.0,貌似是不支持c99,所以不行,多谢啦

抛弃古董vc6,换用vs或者vscode吧,当然vs也不支持这个可变长数组但其他方面可比vc6强多了

vista_info 发表于 2019-8-11 19:05

4楼正解 关于动态数组需要用指针实现吧 10楼应该给出来了,建议楼主研究一下2维动态数组的实现,c丢了太久了只有模糊的概念了
页: [1] 2
查看完整版本: 新人C语言简单求教!第一次发帖望通过