#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
。我该如何解决?
答案 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