2016-12-04 3 views
-2

文字列を宣言した後、セグメント化エラーが発生します。 このエラーに対処する方法がわかりません - 説明できますか?文字列宣言のセグメント化エラー

コードバージョン1(cs50.hからtypedef char *string;を使用して):

int main (int argc, string argv[]) 
{ 
    string key = argv[1]; 
    checkKey(key, argc); 
} 

int checkKey(string text, int n) 
{ 
    //check if text is alphabetical and if argc has the desired amount of command-line elements 
} 

コードバージョン2:

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

int main (int argc, char* argv[]) 
{ 
    printf("%d elements in argc and %s in argv[1]\n", argc, argv[1]); 
    char* key = argv[1]; 
} 
+1

ここで 'string'は宣言されていますか?それはC++ですか?またはtypedef?あなたがあなたの主なことを呼ぶとき、あなたはパラメータを渡すのですか? –

+0

'string'はどこかに定義しましたか?あなたはどのようにあなたのプログラムに電話をしますか?パラメータがない場合、argv [1]は有効ではありません。 – Gerhardh

+2

'argv'にアクセスする前に' argc'をチェックしてください。 –

答えて

0

あなたは、コマンドライン引数なしでプログラムを実行した場合、それはargcとの値1を受信しますプログラム名がでNULLargv[1]であるサイズ2の配列argv

ファンクションcharkKey()が最初の引数として受け取ったポインタを参照解除すると、未定義のビヘイビアが呼び出され、セグメント化エラーが発生する可能性があります。

関連する問題