【例3.9】下面程序正确吗?
#include <stdio.h> void main ( ) { char ch ,c='H' ; char st[3] ,s="Hellow" ; ch=c ; st=s ; printf ("%c ,%s\n" ,ch ,st ); }
编译给出:
error C2106 : '=' : left operand must be l-value
字符有“=”运算符,但字符串没有,所以语句“st=s;”不正确。解决的办法是使用strcpy函数,使用时包含定义它的头文件string.h即可。
【例3.10】使用strcpy函数的例子。
#include <stdio.h> #include <string.h> void main ( ) { char ch ,c='H' ; char st[3] ,s="Hellow" ; ch=c ; strcpy (st ,s ); printf ("%c ,%s\n" ,ch ,st ); }
输出结果为:
H , Hellow
注意不要混淆数学运算符“=”和比较运算符“==”。
【例3.11】想在下面的程序中得到的输出是“5不等于6”,能实现吗?
#include <stdio.h> void main ( ) { int a=5 , b=6 ; if (a=b ) printf ("%d 等于%d\n" ,a ,b ); else printf ("%d 不等于%d\n" ,a ,b ); }
这里将比较运算符“==”错认为赋值运算符“=”。因为“a=b”使用等于运算符,所以使a的值为6。也就是if的表达式为6而不是0,根据if(6)不为0的条件,应执行else后面的语句,输出结果为“6不等于6”,这显然是错误的。
将if表达式改为
if (a==b )
则输出结果为:
5 不等于6