我正在尝试编写一个添加,减少,乘以和除以字符串的程序。我现在正在使用该程序找出如何将输入字符串拆分为两个字符串,然后执行相应的+ - / *。
输入应该如下所示:abc + aaa
并且输出应为abc + aaa = bcd
如何将字符串转换为整数字符串?
#include <stdio.h>
#include <math.h>
#include <string.h>
int main() {
printf("This is a pseudo arithmetic program");
char input[10];
input[10] = '\0';
char first [9];
first[9] = '\0';
char last [9];
last[9] = '\0';
int i = 0;
int b;
int e;
while (input[0] != '0') {
if (input[0] == 0){
return -1;
}
printf("\nEnter a math problem in SOS format using only lowercase letters up to 9 characters");
printf("\nEx: abc+abc... type '0' to quit \n");
scanf("%s", input);
int x = 0;
x = strlen(input);
if (strchr(input, '+')){
for (i = 0; i <= x; i++) {
if (i == '+')
strncpy(first, &input[0], i-1);
i = 0;
}
for (i = x; i >= input[0]; i--) {
if (i == '+')
strncpy(last, &input[i], x);
i = 0;
}
printf("%s", first);
printf(" + ");
printf("%s", last);
printf(" = %d", first + last);
}
答案 0 :(得分:0)
您的代码似乎存在多个问题:
几乎所有数组都有一个数组出界:
char输入[10];
input [10] ='\ 0';
如果你想用'\ 0'初始化最后一个字符,那么它应该是
input [9] = '\0'
数组索引始终从0开始。
目前尚不清楚以下几行的用途:
while(input [0]!='0'){if(input [0] == 0){return -1; }
为字符串输入内容时,为什么提示用户输入0来结束字符串?
strrchr返回搜索到的字符开始的指针。所以,你可以自己确定'+'符号的位置,两个分割字符串而不是你的while循环。请参阅strrchr man page
此外,您添加字符的想法尚不清楚。在您的示例中,您似乎正在考虑a = 1,b = 2等。在这种情况下,如果您的代码不区分大小写,那么您可以将所有输入转换为大写,然后执行(input[0] - 'A')+1
转换你的字母如a,b,c为1,2,3等。
希望这些指针有所帮助。建议您再次检查问题陈述并相应地重构代码。