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