c 语言问题
int l;char ch;
for (l=0; l>=0; )
{
scanf("%s", ch);
if (ch == "OK")
break;
}
为什么输入 OK不会终止循环? 要怎么改进? 要比较字符串,不能直接使用 ==
这里使用 strncmp 比较合适
#include <stdio.h>
#include <string.h>
#define BUFF_SIZE (20)
/*
只有当输入两个大写字母 OK 时,程序终止
*/
int main(void)
{
char buff;
while(1)
{
fgets(buff, BUFF_SIZE, stdin); // 这里不推荐使用 scanf("%s", buff);
if(strncmp(buff, "OK", 2) == 0)
{
break;
}
}
return 0;
}
人造人 发表于 2016-7-20 13:54
要比较字符串,不能直接使用 ==
这里使用 strncmp 比较合适
为什么不能直接比较? 学习电脑 发表于 2016-7-20 17:36
为什么不能直接比较?
因为字符串的本质是地址存放的值,表示字符串的是地址。你用那两个地址 == ,可能一样吗
scanf("%s",&ch) 这句话里不是要加这个的吗 & if 改成 if (!strcmp(ch,"ok")) 弧矢七 发表于 2016-7-21 21:52
scanf("%s",&ch) 这句话里不是要加这个的吗 &
不用,因为那是数组 陌雨 发表于 2016-7-21 22:10
if 改成 if (!strcmp(ch,"ok"))
非0就是1? 学习电脑 发表于 2016-7-22 12:32
非0就是1?
说明了就是 if括号里面如果是非 就不执行,如果不是非就执行,如果ch==OK 那就不是非 就执行下面句,OK了么?
页:
[1]