2016-10-09 4 views
-1

Ну, у меня проблема с обновлением данных в моем счетчике int x. Я передаю много символов char * для моей функции, например. когда я передаю первый char * длины 8, int x будет 8. Тогда, если я пройду следующий символ * длины 11, x все равно будет удерживать значение 8. Любые советы по его исправлению?Хранение char * размер массива в счетчике int

bool check(const char* word) 
{ 
    char checker[LENGTH+1]; 
    int x = sizeof(word); 

    for(int a=0; a<x; a++) { 
     checker[a] = word[a]; 
    } 

    for(int i=0; i < x-1; i++) { 
     //check if all chars are lower-case 
     if(checker[i] < 'a' && checker[i] != '\'') { 
     checker[i] = tolower(checker[i]); 
     } 
    } 
} 
+0

'sizeof (word)' дает вам размер указателя на символ, который в вашем случае кажется 8 байтами. Он не даст вам размер массива. – germanfr

+0

, чтобы добавить к тому, что сказал @germanfr, вам может понадобиться использовать 'strlen()' –

+0

о, я вижу ... Спасибо, ребята, за объяснение! –

ответ

1

sizeof(word) дает вам размер указателя. Вместо этого используйте strlen, чтобы получить длину строки.

Также примечание стиля, x не является отличным именем для переменной, которая хранит длину строки, я бы назвал ее чем-то большим, чем она используется.

Смежные вопросы