Возможный дубликат:
нулевое завершение массива int
Я пытаюсь распечатать все элементы массива:
int numbers[100] = {10, 9, 0, 3, 4};
printArray(numbers);
используя эту функцию:
void printArray(int array[]) {
int i=0;
while(array[i]!='\0') {
printf("%d ", array[i]);
i++;
}
printf("\n");
}
проблема в том, что, конечно, C не делает различий между еще одним нулевым элементом в массиве и концом массива, после которого все это 0 (также обозначается как \0).
Я знаю, что грамматически нет разницы между 0 и \0, поэтому я искал способ или хак для достижения этого:
10 9 0 3 4
вместо этого
10 9
Массив также может выглядеть так: {0, 0, 0, 0}, поэтому, конечно, вывод должен быть 0 0 0 0.
Любые идеи?
'\0'
в контексте символа, чтобы сослаться на нуль, и используйте0
в контексте целого числа. Они почти одинаково обрабатываются компилятором, но имеют разное значение для программиста, читающего ваш код. Когда я вижу код, сравнивающийint i
с'\0'
, у меня в голове появляются предупреждения. Как и присваивание*str = 0
вместо*str = '\0'
. - person tomlogic   schedule 01.12.2010