我从用户那里获取输入然后打印,我想我也应该分配内存可以有人告诉我如何正确地做到这一点?
这是我的尝试:
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);
答案 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;