2010-02-16 37 views
2

爲什麼不能正常工作? 當我嘗試使用-l或-s作爲第一個參數時,if語句不採用。他們總是去看其他語句。C參數不工作?

#include <stdio.h> 
#include <fcntl.h> 
#include <errno.h> 
#include <string.h> 
#include <stdlib.h> 

int main(int argc, char* argv[]) 
{ 
    if (argv[1] == "-l") 
    { 
     printf("Yay!\n"); 
    } 
    else if (argv[1] == "-s") 
    { 
     printf("Nay!\n"); 
    } 
    else 
    { 
     printf("%s\n", argv[1]); 
    } 
     return 0; 
} 
+0

你如何嘗試運行它,會發生什麼? –

+0

「不工作」是什麼意思?什麼是輸入?什麼是輸出? –

+1

您可能已經知道這一點,但在嘗試使用'argv [1]'之前,您還應該檢查'argc> 1'。 –

回答

10

您無法使用==運算符比較字符串,而是使用strcmp()代替。

使用==你比較char *指針,不是字符串值的地址比較字符串。

+0

感謝您的幫助:) – hahuang65

4

在C字符串是通過的strcmp函數比較。相反,你比較只是指針。所以:

if (strcmp(argv[1],"-l") == 0) 
{ 
    printf("Yay!\n"); 
}