[问题] 有关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