【发布时间】:2015-09-07 23:53:17
【问题描述】:
我需要从单行中一次性获取不同的输入。特别是我需要得到一个char,然后,根据我刚刚读取的char值,它可以是一个字符串和一个int或一个字符串、一个int和另一个字符串等等。
示例输入可能是:
c test 20 good
d test 10
这是我写的:
char c, * alpha, * beta;
int val;
c = getchar();
printf("%c\n\n", c);
switch (c){
case 'd': scanf("%s %d", alpha, &val); printf ("%c %s %d", c, alpha, val); break;
case 'c': scanf("%s %d %s", alpha, &val, beta); printf ("%c %s %d %s", c, alpha, val, beta); break;
default: return 0;
}
除了需要换行符(即我按回车键)来获取第一个字符之外,它在 d 情况下工作正常,但在 c 情况下会出现段错误。我该怎么做?
【问题讨论】:
-
alpha和beta指向无处。你应该为它们分配一些内存。 -
chars 的数组,用于alpha和beta或malloc()它们。 -
为了避免输入换行符,读取一个字符串,然后使用 sscanf。您可以调用它一次以获取第一个字符,然后根据 char 值调用第二次