Допустим, у меня есть массив, который содержит выражение:
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
Может кто-нибудь помочь мне, чтобы выражение постоянно редактировалось пользовательским вводом? Спасибо!