2维指针存储字符串

时间:2017-04-18 21:28:03

标签: c pointers multidimensional-array 2d

我在c编码时有点麻烦。我是语言新手,我知道java明显更好,而c中的字符串给我带来了最大的麻烦。

当我实现此代码时......

int num, n, i, j;
printf("How many students will you enter (min. 5)\n");
scanf("%d",&num);

char *fn = (char*)malloc(num * sizeof(char *));
char *ln = (char*)malloc(num * sizeof(char *));

for (n=0; n<num; n++)
{
    *(fn+n) = (char *)malloc(20 * sizeof(char));
    *(ln+n) = (char *)malloc(20 * sizeof(char));
}

printf("Enter students (firstName lastName score)\n");
for(i=0; i<num; i++)
{
    scanf("%s %s", &fn[i], &ln[i]);
}
for (i=0; i<num; i++)
{
    printf("%s %s\n", &fn[i], &ln[i]);
}
printf("You did it!");

它打印每个名字和姓氏的第一个字母,然后是我输入的最后一个人的全名。 例如,

Jane Doe
Greg Smith

用户输入将输出

JGreg DSmith
Greg Smith

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个......

char **fn = (char*)malloc(num * sizeof(char *));
char **ln = (char*)malloc(num * sizeof(char *));

在宣布时

char *fn = (char*)malloc(num * sizeof(char *));
char *ln = (char*)malloc(num * sizeof(char *));

char * fn;声明一个指向字符的指针,该字符可以包含字符串,但不包含数组字符串。

检查出来。