【例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