Как получить символ из строки по индексу на языке c? - PullRequest
0 голосов
/ 25 января 2019
#include <stdio.h>

int main() {
    char str[11];
    int num;
    scanf("%s %i", &str, &num);
    printf("You typed %s and %i\n", str, num);
    if (num == 0)
    {
        printf (str);
    }
    else
    {
        printf (str[num]);
    }
    return 0;
}

Вводят номер телефона и цифру. Если цифра не равна 0, выведите number[digit].

Это последняя вторая строка, я пробовал и str[num], и &str[num]. Первый случай вызовет Segmentation fault (core dumped). Второй вернет строку, но не символ.

6479378812 1                                                                                                                                                                       
You typed 6479378812 and 1                                                                                                                                                         
479378812

Но мне нужна вторая цифра, которая является 4. Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы должны указать, что вы хотите напечатать, с помощью функции printf .

printf("%c", str[num]);

С помощью % c вы сообщаете функции, что хотите напечатать символ. Если вы хотите напечатать всю строку, вы должны использовать % s .

Кстати, вы всегда должны указывать строку форматирования, потому что небезопасно, если вы не укажете ее. https://en.wikipedia.org/wiki/Uncontrolled_format_string

0 голосов
/ 25 января 2019

Вам необходимо указать строку форматирования для вашего printfs.Первому нужен строковый формат "%s", второму - одиночный символ "%c".Вы можете найти все подробности о формате, используемом в строке форматирования printf() здесь .

#include <stdio.h>

int main() {
    char str[11];
    int num;
    scanf("%s %i", &str, &num);
    printf("You typed %s and %i\n", str, num);
    if (num == 0)
    {
        printf ("%s", str);
    }
    else
    {
        printf ("%c", str[num]);
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...