【发布时间】:2018-11-03 22:46:27
【问题描述】:
假设我有一个数组,其中包含以下表达式:
X1+B*3
然后我为用户提供选项,使其在 while 循环中运行:
int main(){
char infix[50];
strncpy(infix, argv[1], 50);
infix[50] = '\0';
int userInput;
while (userInput != 7){
printf("Please input a number.\n");
scanf("%d", &userInput);
if (userInput == 1){
display(infix);
}
else if (userInput == 2){
numReplace(infix);
}
}
}
选项 1 显示当前表达式,选项 2 更改表达式的值,使得 numReplace 包含:
char numReplace(char infix[50])
{
char rep[50];
char newstr[50];
printf("Please enter the variable to be replaced\n");
scanf("%s", rep);
printf("Please enter the value to be placed\n");
scanf("%s", newstr);
char result[1000] = "";
char *tmp;
int len;
char *k = infix;
char *res = result;
while (1)
{
tmp = strstr(k,rep);
if (tmp == NULL)
break;
len=tmp-k;
tmp=tmp+strlen(rep);
strncpy(res,k,len);
strcat(res,newstr);
res += len + strlen(newstr);
k = k+len+strlen(rep);
}
if (!tmp)
strcat(result,k);
puts(result);
}
在进行打印测试后,函数 numReplace 确实起作用,如果我选择将变量 X1 替换为 2,则新表达式为
2+B*3
但是,当我让用户再次选择选项,并且用户选择选项 1,即显示选项时,表达式将恢复到其正常状态:
X1+B*3
有人可以帮助我,以便用户输入永久编辑表达式吗?谢谢!
【问题讨论】: