程序在c中使用2D动态字符串数组崩溃

时间:2014-04-24 23:06:29

标签: c dynamic

我遇到此代码的问题:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
    int num=0;
    printf("Enter number of entries: ");
    scanf_s("%d", &num);
    char **firstname=NULL;
    char **lastname=NULL;
    float *score=NULL;
    int i;
    firstname = malloc(num * (sizeof(char*)));
    for (i = 0; i < num; i++)
    {
        firstname[i] = malloc(21);
    }
    lastname = malloc(num * (sizeof(char*)));
    for (i = 0; i < num; i++)
    {
        lastname[i] = malloc(21);
    }
    score = ((float*)malloc(num* (sizeof(float))));
    for (i = 1; i <= num; i++)
    {
        printf("Enter the first name of entry %d: \n", i);
        scanf_s("%s", firstname[i], 21);
        printf("Enter the last name of entry %d: \n", i);
        scanf_s("%s", lastname[i], 21);
        printf("Enter the score of entry %d: \n", i);
        scanf_s("%f", score[i]);
    }
    for (i = 0; i < num; ++i)
    {
        printf("%s, %s, %f", firstname[i], lastname[i], score[i]);
    }
    return 0;
}

我已经使用建议的更改编辑了代码,现在它会打印随机字符以及名字和名字的随机值以及分数。如果有多个输入迭代,代码也会崩溃(在询问第一个条目的分数后,它会在询问第二个条目的第一个名称之前崩溃。)

0 个答案:

没有答案