繁体   English   中英

对C语言中的字符执行算术运算

[英]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);
    }

您的代码似乎存在多个问题:

  1. 几乎所有数组都发生了超出范围的数组:

    字符输入[10];
    输入[10] ='\\ 0';

在这种情况下,如果您要用'\\ 0'初始化最后一个字符,则应为

input [9] = '\0'

数组索引始终从0开始。

  1. 目前尚不清楚以下几行的用途:

    while(input [0]!='0'){if(input [0] == 0){返回-1; }

  2. 在输入字符串时,为什么提示用户输入0以结束输入?

  3. strrchr返回从搜索到的字符开始的指针。 因此,您可以自己确定“ +”符号在哪里,然后两个将字符串分开而不是while循环。 请参见strrchr手册页

  4. 另外,您添加字符的想法也不清楚。 从您的示例中,您似乎正在考虑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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM