C 指针的第一个字符

C 指针的第一个字符,c,pointers,char,C,Pointers,Char,我有一个关于字符指针的问题 我正在使用fgets读取一个C语言文件。这是一个简短的概述,您可以了解我想做什么: char configline[configmax_len + 1]; //configmax_len is the max value I need while(fgets(configline, sizeof(configline), config){ //config is the file char *configvalue = strtok(configline, "

我有一个关于字符指针的问题

我正在使用
fgets
读取一个C语言文件。这是一个简短的概述,您可以了解我想做什么:

char configline[configmax_len + 1]; //configmax_len is the max value I need
while(fgets(configline, sizeof(configline), config){ //config is the file
    char *configvalue = strtok(configline, " ");
    if (configvalue[0] == "#"){
        continue;
    }
    …
}
char*configvalue
是指向正在读取的当前行的指针。我想检查的是,行的第一个字符是否是“#”

但是,当我执行if语句时:
if(configvalue[0]==“#”)
,编译器会抛出一个错误:
指针和整数之间的比较


如何检查指针指向的字符串的第一个字符是否为某个值?

使用单引号表示单个字符;双引号表示字符串,由指向第一个字符的指针表示,因此会显示错误消息。

Strtok返回指向以nul结尾的字符串的指针,但您使用
=
将其与字符串常量进行比较:

if (configvalue[0] == "#")
首先,
configvalue
是一个指针,因此您可以执行以下操作:

if (*configvalue == '#')
要取消对指针的引用并获取输出字符串中的第一个字符,请尝试使用

if (configvalue[0] == '#'){

这应该可以很好地编译比较C中的字符串与
strcmp()
,而不是
=
(因此
if(strcmp(configvalue,“#”)可能是正确的)。
“#”
是一个字符串;如果要比较字符
“#”
请使用单引号,而不是双引号(因此
if(configvalue[0]='#')
也可能是正确的)。谢谢你,乔纳森,最后一句话对单引号很有帮助谢谢,解决了我的问题。我很想投你的票,认为你的回答很有帮助,但我没有足够的声誉(