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,看看它是否是如此奇怪的线路问题,但事实并非如此。
答案 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] == '#'