[英]Trouble getting nth character of a string
在我的程序中,我正在制作一个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个字符?
您可以像这样获得第n个字符:
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 个字符?
使用<string.h>
strlen()
函数,您可以获得字符串的长度。 因此,您可以轻松获得第n 个字符。 的字符串。
下面也将作为 C 中的字符串是指向第一个字符的char
指针。 (字符串在内存中以字符\\0
终止,这就是程序知道它们在哪里结束的方式。)
line
是指向第一个字符的指针,它可以前进到第 10 个字符,如下所示(我们必须将它前进 9,因为没有前进指向第一个字符)。
*
取消引用指针以获取实际值。
#include <stdio.h>
int main()
{
char line[] = "abcdefghijkl";
printf("%c\n", *(line+9));
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.