繁体   English   中英

无法获取字符串的第 n 个字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM