Следующий метод slength
дает мне бесконечный цикл (бесконечные выражения «привет»). Чтобы найти длину строки с нулевым завершением, что мне нужно, чтобы посмотреть, так как нет «\ 0» ?.Длина ненулевого завершенного символа char * array
int slength(const char *s) {
printf("hello");
int i = 0;
while (s != NULL) {
i++;
s++;
printf("hello");
}
return i;
}
Этот метод, похоже, работает, но я считаю, что слишком много проверок для рассмотрения. Есть ли более простой способ?
int silength(const char *s) {
int i = 0;
while((*s>='a'&& *s<='z') || (*s>='A' && *s<='Z') || *s == ' ') {
i++;
s++;
printf("hello\n");
}
return i;
}
'' 'указатель a будет оценивать только' NULL' после обертывания (как 4-байтовое целое, если вы на маленькой системе, 8-байтовое целое, если вам действительно повезло - и готовы ждать какое-то время). – usr2564301
Вы должны быть осторожны с строк с нулевым завершением, либо вы всегда должны заканчивать нуль, либо всегда иметь размер, который хранится для предотвращения переполнения. У вас большой риск с переполнением границ и уязвимостью. – MiltoxBeyond
В ситуации, когда я не могу остановить завершение строки, какую проверку мне нужно использовать в цикле? –