c - C中的字符串问题

标签 c string

问题是当我在 begin 中输入一个带有“sum”的字符串,然后计算以下数字时。

输入:

sum 10 20 

输出:

30

但是我的代码是错误的,输出是33(处理的是11+22=33) 我认为第二个while循环有错误,但我不知道如何修改。

我需要高手的帮助。

#include<stdio.h>

int main(){

    char a[100];

    while (gets(a))
    {
        if (a[0] == 's'&&a[1] == 'u'&&a[2] == 'm')
        {
            int i;
            int sum = 0;

            for (i = 2; a[i]; i++){
                if (a[i] == ' '){
                    i++;
                    int num = 0;
                    while (1){
                        num += num * 10 + (a[i] - '0');
                        i++;
                        if (a[i] == ' ' || a[i]=='\0') break;
                    }
                    sum += num;
                    i--;
                }
            }

            printf("%d", sum);
        }

    }
    return 0;
}

最佳答案

num += num * 10 + (a[i] - '0');

应该是

num = num * 10 + (a[i] - '0');

关于c - C中的字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27384911/

相关文章:

c - 对链表进行排序时出现段错误

c++ - abort() 在 VS2010 中不是 __declspec(noreturn)

python - 计算字符串中某个字符出现的次数

java - 如何获取两个字符之间的字符串(例如 "|this|that|")

c - 从收到的 RT 数据包中解析 RTP header 和负载

c - 如何在 xv6 中为内核级线程实现克隆

c - ANSI C89 的补零

c++ - 绳索数据结构

string - Bash 字符串比较

c++ - 在 C++ 中使用 C 字符串解析 URL