因爲name
和vname
不包含字符串。通過爲每個字符指定4的大小,並以4個字符的字符串作爲初始值設定項,您告訴編譯器只存儲4個字符而不是'\0'
空字符標記字符串的結尾。
行爲未定義;你(幸運的),它不只是崩潰。
取出4
(或將其更改爲5
):
char name[] = "sara";
char vname[] = "sara";
編輯:這裏有一個修復等幾個問題(見註釋)程序的修改版本。其他在name
和vname
的聲明中省略4
,大多數更改與您的問題沒有直接關係。
#include <stdio.h> /* needed for printf */
#include <string.h> /* needed for strcmp */
int main(void) /* correct declaration of "main" */
{
char name[] = "sara"; /* omit 4 */
char vname[] = "sara"; /* omit 4 */
if (strcmp(name, vname) == 0)
{
printf("OK\n"); /* \n is at the *end* of the line */
}
else
{
printf("Error\n"); /* as above */
}
return 0; /* not absolutely required, but good style */
}
這不是特別相關的問題,但C++不允許'char name [4] =「sara」;';如果你指定了尺寸,你必須有足夠的空間放置尾部的'\'。 –