2017-04-19 35 views
-1

したがって、argv [1]をintに変換しようとしなければならないかどうか、またはcharとして残すことができるかどうかはわかりません。しかし、私はそれが欲しいと思うようにargvを動かすのが難しいです。argv [1]をC言語のcharまたはintに格納する

マイ端末入力は次のようになります。ARGV [1] 'A' 又は 'D' のいずれかとすることができる

./a.out a 

問題:のようなif文を通してそれを渡そうとしたとき:

int main(int argc, char *argv[]) 
{ 
    char *letter; 
    letter=argv[1]; 

    printf(" %s %s ", argv[1], letter); //THIS prints correctly 

//However, even when the input IS 'a', it will still print this: 

    if(letter != "a" || letter != "d") 
     printf("Input letter not 'a' or 'd'\n"); 
    else{//More stuff//}  
} 

私はそれを自分で解決しようとすると、私はエラーのすべての種類を取得します。私はargv [1] [0]を説明し、atoiを使っていくつかのスレッドを見ましたが、それを使って遊んだ後、私はそれを印刷することができませんでした。

+0

を書くあなたがCまたはC++を使用していますか?彼らは異なる言語で、異なる答えを持っています。違いが具体的でない限り、両方にタグを付けないでください。 – aschepler

+0

申し訳ありませんが、ちょうどCです。タグを削除しました。ありがとうございます! – Marcus

+5

'strcmp'を使って文字列を比較します。ポインタをあなたのやり方と比較しないでください。 –

答えて

0

ポインタargv[1]の値と、文字列リテラル"a""d"の最初の文字のアドレスを比較する意味はありません。

だけ

#include <string.h> 

//... 

if(letter == NULL || (strcmp(letter, "a") != 0 && strcmp(letter, "d") != 0)) 
     printf("Input letter not 'a' or 'd'\n"); 
+0

ありがとうございます!完璧に働いた! – Marcus

+0

@Marcusいいえ、まったくありません。どういたしまして。:) –

関連する問題