尝试接受由空格或行分隔的整数,直到用户键入关键字" end"此时程序将查找操作符(+ - * /)以对输入的整数执行操作。
我一直在指针和整数之间进行比较"编译时警告哪些有意义,但我不确定正确的修复方法。有一个注释代码中的问题是。
有人可以帮助我使用第二个scanf的正确语法退出迭代并继续操作员输入。
感谢您的帮助! PS:是的,我知道有更简单的方法来编写程序,但我对C很新,并且正在使用它作为另一个练习的机会。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main (void) {
int iarray[100];
char stop[100];
int c = 0;
char action[100];
while (scanf("%d", &iarray[c]) == 1) {
if (scanf("%s", stop) == "end") // the issue is here
break;
else
continue;
c++;
}
if (c == 0) {
printf("error");
return 1;
}
scanf("%s", action);
return 0;
}
答案 0 :(得分:3)
第一个问题:尝试读取字符串,然后使用sscanf
将字符串转换为整数,如果它不等于“end”。 (按strcmp
而不是==
进行比较。)
第二个问题:当你读数字时,你永远不会达到c ++。继续让它跳过它。
例如,你可以这样做:char temp[100]
while (scanf("%s", temp) == 1) {
if (0 == strcmp(temp,"end")) // return 0 when both equal...
break;
else{
if( 1 == sscanf(temp,"%d",&iarray[c]))
c++; //number successfully read, increment counter.
else
break; //not end nor number...
}
}