Независимо от остальной части вашего вопроса, у вас, кажется, есть некоторые неверные представления о while
циклах. Давайте посмотрим на этот код.
for(int i=0; i<100; i++) {
while(inputData[i] == "\0") {
++count;
}
}
Во-первых, "\0"
не является символом NUL. Это указатель на строку, содержащую только завершающий байт NUL. Вы хотите '\0'
вместо этого. Предполагая это изменение, все еще есть проблемы. Давайте поработаем над тем, что произойдет:
- Как работает цикл
while
? Он выполняет тело несколько раз, пока условие выполняется.
- Когда заканчивается цикл
while
? Когда условие наконец становится ложным, выполняя тело.
- Каково состояние вашей петли?
inputData[i] == '\0'
, после коррекции.
- Что такое тело?
++count
.
- Может ли
++count
когда-либо изменить значение условия? Нет, потому что это не меняет i
.
- Итак, если
inputData[i]
не является байтом NUL, цикл while
никогда не выполняется.
- Но, если
inputData[i]
- это байт NUL, цикл while
выполняется вечно.
- Если вы прочитали правильную строку в
inputData
, то в какой-то момент inputData[i]
будет иметь значение NUL и у вас будет бесконечный цикл.
Чтобы посчитать длину стандартной строки C, просто сделайте это
count = strlen(inputData);
Если по какой-то причине вы действительно должны написать цикл, тогда работает следующее:
int len = 0,
while (inputData[len] != '\0') {
len++;
}
После цикла, len
содержит длину строки.