Arkina 发表于 2016-1-18 20:52:11

C语言结构体中gets运用问题

#include <stdio.h>
#include <stdlib.h>
#define M 2

struct person
{
        char name;
        char phone;
};
void main()
{
       
        struct person man;
        int i;

        for(i=0; i<M ; i++)
        {
                printf("input name:\n");//为什么同样取的是同一个一维数组 两次输入之后值不会被覆盖?
                gets(man.name);
                printf("input phone:\n");
                gets(man.phone);//为什么同样取的是同一个一维数组 两次输入之后值不会被覆盖?
        }
        printf("\tname\t\t\tphone\n\n");

        for(i=0;i<M;i++)
        {
                printf("%20s\t\t\t%20s\n",man.name,man.phone);
        }
}
还有man.name这里i++ 是指向的哪里?

Arkina 发表于 2016-1-18 22:06:59

{:10_266:}{:10_266:}{:10_266:}{:10_266:}

人造人 发表于 2016-1-18 23:24:48

for 第一次循环时
i = 0

执行的是
                printf("input name:\n");
                gets(man[0].name);
                printf("input phone:\n");
                gets(man[0].phone);

for 第二次循环时
i = 1


执行的是
                printf("input name:\n");
                gets(man[1].name);
                printf("input phone:\n");
                gets(man[1].phone);

因为 M 定义为2,所以 for 循环结束

Arkina 发表于 2016-1-18 23:31:27

人造人 发表于 2016-1-18 23:24
for 第一次循环时
i = 0



这个man.name对应的不是开始定义的char name吗?
如果是这样的话 第二次循环的时候指向的是name的话 之前输入的字符不就被第二次覆盖了吗?

人造人 发表于 2016-1-18 23:48:49

Arkina 发表于 2016-1-18 23:31
这个man.name对应的不是开始定义的char name吗?
如果是这样的话 第二次循环的时候指向的是name

第二次循环的时候指向的是name,为什么会覆盖之前输入的字符?
之前是 name , 现在是 name

Arkina 发表于 2016-1-18 23:54:25

人造人 发表于 2016-1-18 23:48
第二次循环的时候指向的是name,为什么会覆盖之前输入的字符?
之前是 name , 现在是 name

{:10_267:}但他是字符串啊。。char name一个位置就能放下一个字符串吗?

人造人 发表于 2016-1-18 23:59:20

Arkina 发表于 2016-1-18 23:54
但他是字符串啊。。char name一个位置就能放下一个字符串吗?

struct person
{
        char name;
        char phone;
};

struct person man;

这回呢

Arkina 发表于 2016-1-19 00:06:45

人造人 发表于 2016-1-18 23:59
struct person
{
        char name;


{:10_247:}是这里结构定义了的man是分别 man和man的意思吗? 然后分别指向一个char型的10个大小的数组? 是这个意思吗?

人造人 发表于 2016-1-19 00:14:24

Arkina 发表于 2016-1-19 00:06
是这里结构定义了的man是分别 man和man的意思吗? 然后分别指向一个char型的10个大小 ...

恩,所以不会覆盖

Arkina 发表于 2016-1-19 00:15:51

人造人 发表于 2016-1-19 00:14
恩,所以不会覆盖

{:10_266:}谢谢大神 终于搞明白了 是我之前一直理解错了钻了牛角尖
页: [1]
查看完整版本: C语言结构体中gets运用问题