[英]Performing arithmetic on Characters in C
我正在尝试编写一个对字符串进行加,减,乘,除的程序。 我现在在程序中的位置是弄清楚如何将输入字符串分成两个字符串,然后执行适当的+-/ *。
输入应如下所示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);
}
您的代码似乎存在多个问题:
几乎所有数组都发生了超出范围的数组:
字符输入[10];
输入[10] ='\\ 0';
在这种情况下,如果您要用'\\ 0'初始化最后一个字符,则应为
input [9] = '\0'
数组索引始终从0开始。
目前尚不清楚以下几行的用途:
while(input [0]!='0'){if(input [0] == 0){返回-1; }
在输入字符串时,为什么提示用户输入0以结束输入?
strrchr返回从搜索到的字符开始的指针。 因此,您可以自己确定“ +”符号在哪里,然后两个将字符串分开而不是while循环。 请参见strrchr手册页
另外,您添加字符的想法也不清楚。 从您的示例中,您似乎正在考虑a = 1,b = 2等。在这种情况下,如果您的代码不区分大小写,则可以将所有输入都转换为大写,然后执行(input[0] - 'A')+1
将您的字母(如a,b,c (input[0] - 'A')+1
转换为1、2、3等。
希望这些指针对您有所帮助。 建议您再次检查问题陈述并相应地重构代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.