2016-11-28 12 views
0

をどのように機能するかはstrcmp()関数の中で:||または&&それは私がCで新たなんだと私はこれを行うことができます場合、私は思っていたこんにちは

if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0) 
    printf("Sexo Invalido"); 

私はこの間違ったをやっているかどうかを知りたいと思ったし、もしそうなら、どうすればいいのですか?

+2

をあなたがしようとしたときに何が起こりましたか? –

+0

あなたはそれらを "** strcmp"関数で使用しません。あなたのC本は論理演算子について何を教えていますか?それ以外に何が見つかりましたか?あなたの**具体的な**問題は何ですか?私たちは個人指導のサービスはありません。 – Olaf

+3

これらのカッコを使用すると、コンパイルしないでください。 –

答えて

3

構文が無効です。

if (strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0) 
    printf("Sexo Invalido"); 

その代わり

if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)) 
    printf("Sexo Invalido"); 

又は

if (strcmp(sexo,sexom)!= 0 && strcmp(sexo,sexof) != 0) 
    printf("Sexo Invalido"); 
1

strcmpを書き込むために正確であろう整数値を返します。入力文字列が等しい場合は0、そうでない場合は0以外

そうです、strcmpコールの結果&&または||演算子のオペランドを指定できます

if (strcmp(sexo, sexom) && strcmp(sexo, sexof)) 
    printf("Sexo Invalido\n"); 

ちょうどあなたの括弧が一致してください。 aが0である場合、その式a && bの結果が0に関係なくbの値なので、bはできません -

&&力が評価から右に左に、そしてそれ短絡ということを覚えておいてくださいまったく評価されない。

0

すでに他の人に指摘されているように、構文エラーが少しあります。つまり、論理式全体で(...)のセットがありません。

さらに、コードは問題ありません。それは言う:

If sexo is neither sexom nor sexof then print "Invalid". 

のような小さなプログラムでテストするのは簡単です:印刷します

#include<stdio.h> 
#include<string.h> 

int main() 
{ 
    char* sexom = "Male"; 
    char* sexof = "Female"; 
    char sexo[10]; 

    strcpy(sexo, "Male"); 
    if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)) 
     printf("Sexo Invalido %s\n", sexo); 

    strcpy(sexo, "Female"); 
    if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)) 
     printf("Sexo Invalido %s\n", sexo); 

    strcpy(sexo, "Child"); 
    if ((strcmp(sexo,sexom)!= 0) && (strcmp(sexo,sexof) != 0)) 
     printf("Sexo Invalido %s\n", sexo); 

    return 0; 
} 

Sexo Invalido Child 
関連する問題