iI'm пытается понять, как правильно использовать массивы на C и попытался написать простую программу, которая должна взять массив из 5 целых чисел и исключить нули влево. Это моя попытка:Проблемы при работе с массивом в C
#include <stdio.h>
int main() {
int seq[5];
int i;
int cor[5];
int counter;
printf("Type the 5 numbers: ");
scanf("%s", &seq);
for (i=0; i<5; i++){
if (seq[i] != 0) {
for (counter=0; counter<5-i; counter++){
cor[counter]=seq[i+counter];
}
break;
}
}
printf("%s", cor);
return 0;
}
Идея заключалась в том, что, когда было введено нечто такое, как 00101, программа будет смотреть на каждую запись и проверьте, является ли это 0. Если это не так, в положении I, он будет писать новый массив, в котором 0-й позиции присваивается значение исходного массива в i, 1-й позиции присваивается значение в i + 1 и т. д., а затем он будет печатать этот новый массив, который не должен иметь ненужных нулей слева. Но он просто печатает исходный массив. Что не так? Извините за вопрос нищенства.
Это было бы лучше спросил на SO, я думаю. Но учтите, что вы не можете читать строку (% s) в целочисленный массив. Содержимое строки не преобразуется автоматически в целые числа. –
Ваша внутренняя петля начинается с counter = 0 снова, также вы используете j, который не должен определяться. счетчик должен начинаться с текущего значения i. Скажем, в вашем примере первый 1 находится в позиции 2, поэтому вы хотите начать копирование оттуда. –
Спасибо, Торстен, но, похоже, это не решает проблему. И я был бы еще более смущен, если бы это произошло, не нужно «встречать» начало в 0, чтобы оно записалось в 0-й записи «cor»? И извините за j, я был уверен, что исправил это, прежде чем вставлять его здесь ... –