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]='#')
也可能是正确的)。谢谢你,乔纳森,最后一句话对单引号很有帮助谢谢,解决了我的问题。我很想投你的票,认为你的回答很有帮助,但我没有足够的声誉(