C 有没有可能做一个循环,总是多次扫描一个数字和一个字符串?(我家庭作业的一部分)

C 有没有可能做一个循环,总是多次扫描一个数字和一个字符串?(我家庭作业的一部分),c,c99,C,C99,因此,在我的CS课程中,我们必须制作一个计算器,读取输入,然后在读取=符号后计算结果。 输入总是由一个数字后跟运算符组成 我现在正在努力寻找扫描输入的方法。我想使用一些循环,它总是像这样存储它: scanf("%lf %s ", &in, c); 注:计算器进行一次又一次的运算。因此,在下面的例子中,加号只对20和4起作用,只有这样,结果才会取除法符号并除以8。然后,新结果被“neg”字符串否定 例如:输入:20+4/8负= 输出:结果:-3 这就是我试图解决它的方法。我的意图是让循环

因此,在我的CS课程中,我们必须制作一个计算器,读取输入,然后在读取=符号后计算结果。 输入总是由一个数字后跟运算符组成

我现在正在努力寻找扫描输入的方法。我想使用一些循环,它总是像这样存储它:

scanf("%lf %s ", &in, c);
注:计算器进行一次又一次的运算。因此,在下面的例子中,加号只对20和4起作用,只有这样,结果才会取除法符号并除以8。然后,新结果被“neg”字符串否定

例如:输入:20+4/8负= 输出:结果:-3

这就是我试图解决它的方法。我的意图是让循环将每个数字存储到数组的新“框”中,然后将每个字符串存储到char数组的新“行”中。op数组中的4用于设置字符串的最大长度,因为我知道可以出现的最长字符串是“sqrt”。 我看到for条件下的“\n”可能是无用的,但不知道如何执行

我正在考虑使用for或while循环

int main(){
    double in[10];
    char op[5][4];

    for(int i=0; i<5;i++){
        scanf("%lf %s ", &in[i], op[i][4]);
    }

    printf("%.3f %s", in[0], op[0][0]);

return 0;
}
intmain(){
双进[10];
char op[5][4];

对于
scanf
格式字符串中的(int i=0;i,
%s
表示您要读取字符串,这意味着它需要放置该字符串的地址。您正在为它传递
op[i][4]
,它是

如您所见,第一个参数是
constchar*
类型,即您需要提供有效地址

用这个

char op[5][4]; /* 5 char array, in each char array you can have 4 char's
                *  i.e op[row][0] to op[row][3]. There is no  op[i][4] 
                */
你可以

for(int i=0; i<5;i++){
   scanf("%s",op[i]); /* op[i] itself address, so don't need & */
}

op[i][4]
char
类型,而不是
char*
类型。请尝试
scanf(%lf%s),&in[i],op[i]);
别忘了为空终止符添加一个字符。如果最长的op是4个字符,你需要声明
char op[5][5]
嗨,谢谢你的提示!我想如果最长的op是4个字符,那么[4]从0到4就足够了?但可能这是更好的方法。谢谢Shello,谢谢你的提示。因此,如果我有一个定义的char:op[5][4],然后用op[I]扫描一个文件,那么它会自动工作吗?我的意思是,没有第二个括号?
for(int i=0; i<5;i++){
   scanf("%s",op[i]); /* op[i] itself address, so don't need & */
}
for(int i=0; i<5;i++){ 
  for(int j=0; j<4; j++) {
   scanf(" %c", &op[i][j]); /* storing char by char */
  }
}
printf("%.3f %c", in[0], op[0][0]);