在我的程序中,我正在做一个 char line[MAXLINE]
然后用它在。
fgets(line, sizeof line, f);
我就可以把这行打印出来
printf("%s\n",line);
然而,尝试一些像
printf("%s\n",line[10]);
警告我 line[10]
属于 int
以及类似
printf("%s\n",line + 10);
从字符10开始打印。
我怎么能只得到 n这个字符串的第th个字符?
你可以得到 nth字符,像这样。
char ch = line[10];
但你不能把它打印成字符串,因为它是... 不 一个字符串。将其打印为一个字符。
printf("%c\n", line[10]);
当你在printf中的格式字符串中使用%s时,你所做的就是打印以空为结束的字符串,从提供的指针开始。
line+10是字符串中第11个字符的指针,所以它打印所有在内存中找到的字符,直到它遇到0(空)字符。
要打印单个字符,你必须在格式字符串中使用%c。
printf("%c",line+10);
printf("%s\n",line + 10); // %s expects a char *
取而代之的是这样的打印方式-
printf("%c\n",line + 10);
我怎么能只得到这个字符串的第n个字符?
用 strlen()
功能从 <string.h>
你可以得到字符串的长度。因此,你可以很容易地得到 第十 字符。
下面也可以作为C语言的字符串是一个 char
指向第一个字符的指针。(字符串在内存中以字符 \0
,这就是程序如何知道它们在哪里结束的原因)。)
line
是指向第一个字符的指针,它可以前进到第10个字符,如下图(我们必须前进9,因为没有前进到第一个字符)。
*
取消引用指针,得到实际值。
#include <stdio.h>
int main()
{
char line[] = "abcdefghijkl";
printf("%c\n", *(line+9));
return 0;
}