c - 扫描整数数组

标签 c arrays int

首先,我知道这可能是新手,但我才刚刚开始。请尽量保持耐心。 我想创建一个函数,在找到数字“0”之前对所有数字进行求和。 例如。 “1230”应返回“6”。 但我不明白如何扫描整数数组。 这是我的代码,编译器显示“段错误(核心已转储)。 怎么了?

#include <stdio.h>

int main(){
    int sum, i, x[1000];
    printf("Insert a number");
    scanf("%d", &x[i]);
    sum=0;

    for (i=0; x[i]!='0'; i++)
       sum=sum+x[i];

    printf("%d", sum);
    return 0;
}

最佳答案

“0”是 char ,不是整数。你应该写x[i]!=0

但是char可以自动转换为int ,所以编译 OK...但是 '0' 转换为 ASCII 代码,所以你的程序等于 x[i]!=48

并且您应该检查数组边界以避免数组中不存在 0 时出现错误。你应该写i<1000 && x[i]!=0

编辑:你的scanf也错了,scanf只能接受一个数字,而i没有被分配。我想您的意思是扫描整个字符串,然后将数字逐位相加。那么你应该使用char并这样写:

int sum, i;
char x[1000];
scanf("%s", x);
for(int i=0; i<1000 && x[i]>'0' && x[i]<='9'; i++)
sum += (x[i] - '0');

关于c - 扫描整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245591/

相关文章:

c - 在输入末尾键入预期的声明或语句

javascript - 检查两个数组之间的相等性

java - 二维数组循环越界

javascript - 如何使用 do while 循环将字符串多次插入数组?

c - 二进制大数

c - 将矩阵传递给 C 函数时出现段错误

c++ - 告诉dlopen先在哪个库中搜索符号

java - 尽管我有一个 Eclipse 要求返回声明

c - 如何除以两个 double 并输出商数?

java - 将 togglebutton boolean 值转换为整数值,然后在 TextView 中加在一起