2017-03-19 26 views
0

私はCから始めると助けになるでしょう。エラー:ポインタと整数の比較( 'int'と 'string'(別名 'char *'))

'letters 'に保存された文字列から、argv []でユーザーが提供したものと一致するものがあるかどうかを1つずつ比較したいと思います。また、私が理解していないif節には問題があります。

crypt.c:17:18: error: comparison between pointer and integer ('int' and 'string' (aka 'char *')) [-Werror] 
     if (g[i] == argv[1]) 
      ~~~~^~~~~~~~ 

私は以前に定義したポインタと整数であることをコンパイラには同意しません。 gを文字列として、argv []を文字列として返します。誰かが私が行方不明になっているところで光を放つことができますか?私はポインターについてほとんど知っていません、あなたはいくつかの理論も提供できますか?ありがとう。私はstringtypedef char *であると仮定するつもりです

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

int main(int argc, string argv[]) 
{ 
    if (argc != 2) 
    { 
     printf("Wrong Input\n"); 
    } 
    string g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
    for (int i = 0, n = strlen(g); i < n; i++) 
    { 
     if (g[i] == argv[1]) 
     { 
      printf("True\n"); 
     } 
     else 
      printf("False\n"); 
    } 
} 
+2

'G [i]を== ARGV [1]' - > 'G [i]を== ARGV [1] [i]は' – StoryTeller

+0

そして、あなたはまた、 '確認する必要がありますARGV [1]' ISN 't'は 'g'よりも短く** – StoryTeller

+1

@StoryTeller 'argv [1]'は 'g'と同じ長さですか? – BLUEPIXY

答えて

2

は、ここに私のコードです。 (Cの文字列私は、彼らがポインタ以外のものだとstringタイプであることを隠していないふりをしていないお勧めしたいとても奇妙です。)

トラブルはargvchar **、文字列の配列です。 gchar *、または文字列です。 g[0]は、文字列の最初の文字、charです。 が最初の文字列、char *です。

したがってg[i] == argv[1]は、charchar *を比較しています。おそらくg[i] == argv[1][i]を意味します。

0

gは文字列ですが、g[i]はもはや文字列ではありません。 (読んだ:https://www.tutorialcup.com/cplusplus/strings.htm#CharacterArray

多分それはチャーとしてそれをチェックすることができます。

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

// maybe cs50.h have this line inside: 
// typedef char* string; 

int main(int argc, string argv[]) 
{ 
    if ((argc != 2) || (strlen(argv[1])!=1)) 
    { 
     printf("Wrong Input\n"); 
     return 0; 
    } 

    // second argument, and first char 
    char arg = argv[1][0]; 

    string g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
    for (int i = 0, n = strlen(g); i < n; i++) 
    { 
     if (g[i] == arg) 
     { 
      printf("True\n"); 
     } 
     else 
     { 
      printf("False\n"); 
     } 
    } 
} 
関連する問題