将字符串中的char与C中的指针进行比较

时间:2017-02-02 21:46:10

标签: c pointers

char * line = NULL;
size_t len = 0;
FILE *fp = fopen("test.rpn", "r");
while ((read = getline(&line, &len, fp)) != -1) {
    if(&line[0] == "#"){
            exit(0);
    }
}

这不起作用,一行的第一个字符是#,但它没有退出。我也尝试了0/1/2/3/4,看看它是否是如此奇怪的线路问题,但事实并非如此。

3 个答案:

答案 0 :(得分:4)

而是这样做

if (line[0] == '#') // Note the single quotes

当你拿到地址时,无论line[0]处的字符是什么,比较都是假的,因为你正在比较地址 1 ,你可以确定它们会有所不同。您需要比较值。

此外,当您看到警告时,通常意味着出现了问题。如果你看到一个警告,但没有任何错误,那么你肯定期待这样的警告。如果警告意外,你做了一件坏事。

1 &line[0]line相同,因此您要比较line的地址,"#"是指向字符串地址的指针文字{{1}},其中所有确定性不一样

答案 1 :(得分:1)

if(&line[0] == "#"){

应该是

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

你想要比较字符串的第一个字符,而line已经是一个字符串,不需要取(&)的地址,也可以使用单引号而不是双引号。

答案 2 :(得分:1)

&line表示该行的地址,您想要他的值,因此使用:

line[0] == '#'