Я передаю указатель на массив символов к моему методу, а также значение для фактической высоты массива символов. Я - цикличное выполнение до, видят, ли все значения 0, если они - затем возврат 0, еще возвратитесь 1.
Метод используется в качестве теста, чтобы видеть, должен ли я свободная память или не и устанавливать указатель в NULL, если это полно 0. Проблема, которую я имею, - то, что программа должна иметь "некоторую несвободную" память в конце, таким образом, я понятия не имею, борюсь ли его выполнение его правильно - и gdb я с очень.
Спасибо за чтение
int shouldBeNull(char *charPointer, int sizeOfCharArray)
{
int isIn = 0;
int i = 0;
while(i < sizeOfCharArray){
if(*charPointer != '0'){
isIn = 1;
break;
}
i++;
charPointer++;
}
return isIn;
}
isIn
и выхода из цикла вы можете просто вернуть 1 из условия Когда вы говорите «... все значения равны нулю ...», я предполагал, что вы имели в виду двоичные значения нуля, а не символ '0' ...
if(*charPointer != '0'){
Это нулевой символ (0x31), а не нулевой символ (0x00). Если вы пытались проверить нулевые байты, попробуйте следующее:
if (*charPointer != '\0') {
Кроме того, вы без увеличения или смещения указателя на ваш символ charPointer
, поэтому вы всегда проверяете первый символ.
if (*charPointer++ != '\0) {
... или ...
if (*(charPointer + i) != '\0) {