scanf("%1c%2c %d %d %d %d %d %d %d %d %d %d",
&x, &y, &arr[0], &arr[1], &arr[2], &arr[3], &arr[4],
&arr[5], &arr[6], &arr[7], &arr[8], &arr[9]);
strcpy(string, x);
value1 = atoi(string);
strcpy(string, y);
value2 = atoi(string);
value_final = value1 + value2;
我正在尝试获取-l
或-s
的ascii值,然后通过添加了ascii值的switch
传递它们但我在使用时遇到错误{ {1}}我不确定当用户输入atoi
或-l
时是否应该添加ascii值,或者他们是否是另一种方法?
答案 0 :(得分:2)
您的代码有几个问题:
switch
个案例没有break;
条款。控制属于下一个子句,最后进入default
语句。char
数组和单个字符变量之间的显示混淆:strcpy(string, x);
甚至不应该编译。-l
或-s
的方法非常错综复杂,可能是错误的。你应该使用字符文字。printf
语句应该在循环之外。 max
和min
未初始化,循环调用未定义的行为。atoi()
:如果这是您的作业,则不应使用scanf()
。这是一个简化版本:
int main(void) {
char option[3], buffer[32];
int i, min, max, value;
min = max = 0;
if (scanf("%2s", option) == 1) {
for (int i = 0; i < 10 && scanf("%31s", buffer) == 1; i++) {
value = atoi(buffer);
if (i == 0) {
min = max = value;
} else {
if (min > value)
min = value;
if (max < value)
max = value;
}
}
if (!strcmp(option, "-l")) {
printf("output: The largest number is %d\n", max);
return 0;
} else
if (!strcmp(option, "-s")) {
printf("output: The smallest number is %d\n", min);
return 0;
}
}
printf("You have entered an invalid option, try again next time.\n");
return 0;
}