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

时间:2015-09-17 14:11:23

标签: c string pointers indexing types

在我的计划中,我正在制作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 字符?

4 个答案:

答案 0 :(得分:4)

您可以像这样获得 n 字符:

char ch = line[10];

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

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

答案 1 :(得分:0)

在printf中的格式字符串中使用%s时,您正在执行的操作是从提供的指针开始打印以null结尾的字符串。

line + 10是指向字符串中第11个字符的指针,因此它会打印在内存中找到的所有内容,直到遇到/ 0(null)字符。

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

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

答案 2 :(得分:0)

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

而是像这样打印 -

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

我怎样才能得到这个字符串的第n个字符?

使用strlen()中的<string.h>函数,您可以获得字符串的长度。因此,您可以轻松获得第n个字符。字符串。

答案 3 :(得分:0)

下面的内容也将作为C中的字符串,是指向第一个字符的char指针。 (字符串在字符串中以字符\0终止,这是程序知道它们结束位置的方式。)

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

*取消引用指针以获取实际值。

#include <stdio.h>

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

    return 0;
}