使用C

时间:2015-06-28 02:39:20

标签: c arrays input heap

我从用户那里获取输入然后打印,我想我也应该分配内存可以有人告诉我如何正确地做到这一点?

这是我的尝试:

    int days = 1;
    char * obligation[1500];
    char * dodatno[1500];

    puts("Enter nuber of days till obligation:\n");
    scanf(" %d", &days);
    puts("Enter obligation:\n");
    scanf(" %s", obligation);
    puts("Sati:\n");
    scanf(" %s", dodatno);

printf("%s|%s|%s \n",days,obligation,dodatno);

1 个答案:

答案 0 :(得分:3)

您不需要动态分配。只需将其存储在char数组中即可 您的printf("%s|%s|%s....错误,将第一个%s更改为%d

这是一个如何看起来像

的例子
int main()
{
    int days = 1;
    char obligation[256];
    char dodatno[256];

    printf("Enter number of days till obligation: ");
    scanf("%d", &days);
    printf("Enter obligation: ");
    scanf("%s", obligation);
    printf("Sati: ");
    scanf("%s", dodatno);

    printf("%d | %s | %s", days, obligation, dodatno);

    return 0;
}

否则,如果你想读整行,你可以使用fgets并使用strtok解析:

char* days;
char* obligation;
char* dodatno;
char line[256];

printf("Enter days, obligation and sati: ");
fgets(line, sizeof(line), stdin);

days = strtok(line, " ");
obligation = strtok(NULL, " ");
dodatno = strtok(NULL, "\n");

printf("%s | %s | %s", days, obligation, dodatno);

return 0;