第二次scanf识别关键字以退出整数迭代?C

第二次scanf识别关键字以退出整数迭代?C,c,scanf,C,Scanf,尝试接受由空格或行分隔的整数,直到用户键入关键字“end”,此时程序将查找运算符(+-*/),以对输入的整数执行操作 在编译时,我不断收到“指针和整数之间的比较”警告,这是有意义的,但我不确定修复它的正确方法。代码中的问题在哪里有一个注释 请有人帮助我使用正确的语法,以便第二次扫描退出迭代并转到运算符输入 谢谢你的帮助! PS:是的,我知道有更简单的方法来编写程序,但我对C语言非常陌生,我正在利用这个机会来练习 #include <stdio.h> #include <stri

尝试接受由空格或行分隔的整数,直到用户键入关键字“end”,此时程序将查找运算符(+-*/),以对输入的整数执行操作

在编译时,我不断收到“指针和整数之间的比较”警告,这是有意义的,但我不确定修复它的正确方法。代码中的问题在哪里有一个注释

请有人帮助我使用正确的语法,以便第二次扫描退出迭代并转到运算符输入

谢谢你的帮助! 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;
}
#包括
#包括
#包括
#包括
内部主(空){
int-iarray[100];
字符停止[100];
int c=0;
炭作用[100];
而(scanf(“%d”)、&iarray[c])==1){
如果(scanf(“%s”,stop)=“end”)//问题就在这里
打破
其他的
继续;
C++;
}
如果(c==0){
printf(“错误”);
返回1;
}
scanf(“%s”,动作);
返回0;
}

第一个问题:尝试读取字符串,然后使用
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...  
     }
}

你能不能把你发布的代码减少到一个最小的样本,这样就可以复制这个警告?
scanf
返回一个
int
,而不是
const char*
。我包含了完整的代码(毕竟不多),这样就可以很容易地复制并粘贴到编译器中,看看我在做什么。。。在过去,当我发布部分人要求完全。。。不能让每个人都高兴,我宁愿付出太多,记下问题的部分,而不是不提供足够的信息。虽然现在一切都安排好了,但是非常感谢你的帮助,这太完美了,我正相反地考虑它。。。我也不知道sscanf()这正是我所需要的。如果我有+15,我会给你一个^。。。我会回来的。非常感谢。