Как получить доступ к первому символу массива символов? - PullRequest
2 голосов
/ 02 октября 2010
#include <stdio.h>

int main(void){
    char x [] = "hello world.";
    printf("%s \n", &x[0]);
    return 0;
}

Приведенный выше код распечатывает "hello world."

Как бы я распечатал только "h"?Разве доступ x[0] не должен обеспечить это?

Ответы [ 5 ]

7 голосов
/ 02 октября 2010

Вы должны сделать:

printf("%c \n", x[0]);

Спецификатор формата для печати символа - c. Таким образом, строка формата, которая будет использоваться, %c.

Также для доступа к элементу массива с действительным индексом i необходимо сказать array_name[i] Вы не должны использовать &. Использование & даст вам адрес элемента.

4 голосов
/ 02 октября 2010

Разве доступ x[0] не должен обеспечить это?

Нет, потому что & в &x[0] получает адрес первого элемента строки (так что этоэквивалентно просто использованию x.

%s выведет все символы в строке, увидит нулевой символ в конце строки (что неявно для литеральных строк).

Чтобы распечатать символ, а не всю строку, используйте спецификатор формата символа %c.

Обратите внимание, что printf("%s \n", x[0]); будет недопустимым, поскольку x[0] имеет тип char и %s ожидает char *.

3 голосов
/ 02 октября 2010
#include <stdio.h>

int main(void){
    char x [] = "hello world.";
    printf("%c \n", x[0]);
    return 0;
}
2 голосов
/ 02 октября 2010

Строка в C - это массив символов, последним из которых является символ NULL '\ 0'.Когда вы используете строковый спецификатор "% s" в printf, он начнет печатать символы по указанному адресу и продолжит, пока не достигнет нулевого символа.Чтобы напечатать один символ, используйте вместо этого строку формата «% c».

0 голосов
/ 03 октября 2010

Поскольку строка в C - это массив символов.Это утверждение будет печатать первый символ.

printf("%c \n", "hello world."[0]);
...