2014-09-01 3 views
-1

Я знаю, что по этому вопросу были заданы другие вопросы, но я не смог найти его точно для того, что я ищу. Я беру курс на С и был представлен следующей задачей: «Создать новое приложение и создать четыре символьных массивов провести следующие строки текста:.Получение длины массива символов

«Розы красные фиалок синие C. Программирование - это забава, а иногда и моя голова. Убедитесь, что массивы символов достаточно для больших вмещать символ, используемый для завершения строки C. Использования команды правильно отформатирован Е() и означающий, выходных значения массива строк. "

Вот код, который я до сих пор:

#include <stdio.h> 

int main() 
{ 

    char firstLine [] = "Roses are red."; 
    char secondLine [] = "Violets are blue."; 
    char thirdLine [] = "C programming is fun"; 
    char fourthLine [] = "And sometimes makes my head hurt"; 
} 

Вместо ручного подсчета количества символов в каждом массиве, а затем положить, что число в «[]», есть способ, чтобы определить длину символа в каждой строке?

+0

Justin, следуя другим комментариям ниже, в хорошей привычке компилировать свой код с ** предупреждениями ** включен в вашей строке компиляции. Как минимум, что-то вроде 'gcc -Wall -Wextra -o outputfile inputfile.c' –

ответ

1

На основании своих исследований с использованием strlen

Код:

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char str [] = "Roses are red."; 
    size_t len; 

    len = strlen(str); 
    printf("Length of |%s| is |%zu|\n", str, len); 
    return(0); 
} 

выход:

Length of |Roses are red.| is |14| 

Источник: http://www.gnu.org/software/libc/manual/html_node/String-Length.html

+1

Примечание:' strlen (str) 'возвращает тип' size_t', а не 'int'. – chux

+0

@chux мой ответ неправильный? –

+0

Когда строка маленькая, вы не столкнетесь с различиями. В этом примере -> нет проблем. Для общего решения да, есть проблема. – chux

3

синтаксис:

char str[] = "Some text."; 

уже подсчитывает правильную длину для строки. Вам не нужно предпринимать никаких дальнейших действий. Оставшийся [] пустой (в этом контексте) означает, что массив имеет точный размер, необходимый для хранения строки.

Вы можете проверить это, выполнив printf("The size is %zu.\n", sizeof str);, обратите внимание, что это будет 1 больше, чем результат strlen, потому что строки имеют нулевой ограничитель.

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