2016-08-14 40 views
2

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

我正在阅读C文件,使用fgets。这是一个简短的概述,可以让你了解我想做些什么:

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语句时:编译器会抛出一个错误:comparison between pointer and integer

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

+6

比较C字符串与'的strcmp()','不'==(所以'如果(STRCMP(configvalue, “#”)= = 0)'可能是对的)。 ''“#”'是一个字符串;如果你想比较字符''#''使用单引号,而不是双引号(所以if(configvalue [0] =='#')'可能是正确的)。 –

+0

谢谢jonathan,最后一句话帮助了单引号 – Dezzy

回答

5

尝试使用

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

这应该编译很好

4

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

+0

谢谢你,解决了我的问题。我很乐意为你的答案投票,但我没有足够的声望。 :( – Dezzy

1

的strtok返回的指针指向终止字符串NUL,但你使用==与字符串常量比较这样的:

if (configvalue[0] == "#") 

首先,configvalue是一个指针,所以你可以这样做:

if (*configvalue == '#') 

取消引用指针并获取输出字符串中的第一个字符。