如何在C语言中按索引从字符串中获取char?

时间:2019-01-24 22:59:57

标签: c string

#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 :(得分:3)

您需要为printfs指定格式字符串。第一个需要字符串格式“ %s”,第二个需要单个字符“ %c”。您可以在printf() here的格式字符串中找到有关格式的所有详细信息。

#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;
}

答案 1 :(得分:1)

您必须使用 printf 函数指定要打印的内容。

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

使用%c 告诉函数您要打印字符。 如果要打印整个字符串,则应使用%s

顺便说一句,您应该始终指定格式字符串,因为如果不指定格式字符串,这是不安全的。 https://en.wikipedia.org/wiki/Uncontrolled_format_string