Можно создать дубликат:
nul terminating a int arrayC - различие между 0 и 0 в целочисленном массиве
Я пытаюсь напечатать все элементы в массиве:
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.
Любые идеи?
спасибо, что я увидел его и проголосовал за закрытие, я немного взломал его. – Gal 2010-11-30 21:53:49
В общем случае используйте `` \ 0`` в контексте символа, чтобы ссылаться на нуль и использовать `0` в целочисленном контексте. Компилятор обрабатывает почти то же самое, но имеет разные значения для программиста, читающего ваш код. Просмотр кода, который сравнивает `int i` с` `\ 0'`, вызывает в моей памяти предупреждения. Как и присваивание `* str = 0` вместо` * str = '\ 0``. – tomlogic 2010-11-30 23:15:34