获取字符串的第N个字符有问题

问题描述 投票:1回答:4

在我的程序中,我正在做一个 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个字符?

c string pointers indexing types
4个回答
4
投票

你可以得到 nth字符,像这样。

char ch = line[10];

但你不能把它打印成字符串,因为它是... 一个字符串。将其打印为一个字符。

printf("%c\n", line[10]);

0
投票

当你在printf中的格式字符串中使用%s时,你所做的就是打印以空为结束的字符串,从提供的指针开始。

line+10是字符串中第11个字符的指针,所以它打印所有在内存中找到的字符,直到它遇到0(空)字符。

要打印单个字符,你必须在格式字符串中使用%c。

printf("%c",line+10);

0
投票
printf("%s\n",line + 10);  // %s expects a char * 

取而代之的是这样的打印方式-

printf("%c\n",line + 10);

我怎么能只得到这个字符串的第n个字符?

strlen() 功能从 <string.h> 你可以得到字符串的长度。因此,你可以很容易地得到 第十 字符。


0
投票

下面也可以作为C语言的字符串是一个 char 指向第一个字符的指针。(字符串在内存中以字符 \0,这就是程序如何知道它们在哪里结束的原因)。)

line 是指向第一个字符的指针,它可以前进到第10个字符,如下图(我们必须前进9,因为没有前进到第一个字符)。

* 取消引用指针,得到实际值。

#include <stdio.h>

int main()
{
    char line[] = "abcdefghijkl";
    printf("%c\n", *(line+9));

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.