Прежде всего, я понимаю, что это может быть новичок, но я только начинаю. Пожалуйста, постарайся быть терпеливым. Я хочу сделать функцию, которая должна суммировать все числа, прежде чем найти номер «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;
}
Похоже, что вы должны читать в строке, а затем итерации по символам в этой строке, конвертируя их по ходу. Это также имеет то преимущество, что не ограничивается размером целого числа c (32767) –
@ SimonMᶜKenzie Хорошая точка. – DigitalNinja
всегда нужно проверить возвращаемое значение из scanf (и семейства), чтобы убедиться, что операция прошла успешно. Однако использование fgets() или getline() приведет к тому, что весь вход будет представлен как массив символов, завершенный символом новой строки, а затем «\ 0». Новая строка может быть проигнорирована в коде и итерации по массиву символов до тех пор, пока текущий символ «\ 0» не предложит изучить, как символы и целочисленные значения хранятся в памяти. – user3629249