gpt4 book ai didi

c - 在 C 中对字符执行算术运算

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:20 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,对一串字符进行加减乘除运算。我现在的程序正在弄清楚如何将输入字符串拆分为两个字符串,然后执行适当的 +-/*。

输入应该是这样的 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 man page

  4. 另外,您添加字符的想法不明确。从您的示例来看,您似乎正在考虑 a = 1、b = 2 等。在这种情况下,如果您的代码不区分大小写,那么您可以将所有输入转换为大写,然后执行 (input[0 ] - 'A')+1 将 a、b、c 等字母转换为 1、2、3 等。

希望这些指点有所帮助。建议您再次检查您的问题陈述并相应地重构您的代码。

关于c - 在 C 中对字符执行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com