[問題] 有關C的字串比較問題 (已解決?)

作者: Billeve (抖M是我)   2020-04-15 23:07:38
因為平常都是使用C++的緣故,
所以對於C有點不熟悉
我想要檢查一個字串內是不是含有換行符號
因此我這樣寫
for(字串)
if(yytext[i]=='\n')
……
yytext 是我想要檢查的字串
但是結果卻不如我的預期
對於上述寫法,有警告訊息
comparison between pointer and integer
因此我有試圖改寫成
for(字串)
if(&yytext[i]=='\n')
……
但是仍然有一樣的警告,
有上網找過這類問題了,
但是都沒有看到跟我一樣的問題
輸入:
“/*
djkslslskkdkf
*/”
預期輸出:
“/* (找到換行符號)
djkslslskkdkf (找到換行符號)
*/”
實際輸出:
“/*
djkslslskkdkf
*/”
註: 後來我又重新編譯過一邊,
結果就好了,我一行都沒改,
所以可能是編譯器的問題(?
作者: james732 (好人超)   2020-04-15 23:39:00
strcmp我好像誤會你的意思了,不要理一樓
作者: Billeve (抖M是我)   2020-04-16 00:01:00
雖然不知道為什麼對了,但是我還是想確定一下我這種寫法是對的嗎?
作者: LiloHuang (十年一刻)   2020-04-16 00:14:00
沒有完整原始碼不好確認,我猜你一開始應該打成雙引號?
作者: ctrlbreak   2020-04-16 00:18:00
yytext 宣告成什麼型態?
作者: Billeve (抖M是我)   2020-04-16 04:15:00
應該是char*的型態
作者: Dinowchang (Dinow)   2020-04-16 07:56:00
如果是在 windows 下的話,換行符號是兩個字元
作者: qscgy4 (有點厲害)   2020-04-16 08:50:00
回樓上windows不一定是\n\r,有時候只有\n
作者: justhit666 (就打666)   2020-04-24 14:27:00
可以貼一下完整的code,yytext宣告成什麼還有for的條件,如果yytext宣告成char *的話第一種寫法應該是沒問題的而且也不知道你用甚麼編譯器下了甚麼編譯指令XD

Links booklink

Contact Us: admin [ a t ] ucptt.com