2016-06-12 12 views
-1

mingW開発環境では単純なcコードでも実行できません。このコードは、MINGWを使用してCプログラムを実行できません

#include<stdio.h> 
int main(){ 
    char ans[5]; 
    printf("Enter yes or no"); 
    scanf("%s", ans); 
    printf("You just entered", ans); 
    return 0; 
} 

を正常に動作します。しかし、私はchar*にANSのデータ型を変換したときに、その後

gcc basic.c -o basic.exe 

私は出力を見ることができないですコマンドによって作成された.exeファイルを実行しますそれはちょうどbasic.exeが動作を停止したと言います。 mingWのインストールに何か問題があるかどうかわかりません。 char *にANSを変更するには十分ではない その、あなたはmalloc関数を使用して文字列のための場所を割り当てる必要があるため

+0

exacutionにつながるコードサンプル(完全なコードであれば、ほぼ同じサイズ) – VolAnd

+0

これは 'char [5] ans'を' char * ans'に変更するコードです。 – viveksinghggits

+0

'char * ans;の場合については、下の「Haimovitz」の答えを参照してください。問題は、あなたのポインタが「何もない」 – VolAnd

答えて

3

あなたは出力を見ることが想定されていない、プログラムがクラッシュすると仮定されています

ans=malloc(sizeof(char) * 5); 

そしてまた、printf関数は次のようになります。

​​
+0

を指していることと、 'printf(" ans)を入力したばかりです; '%s'はどこですか? – John3136

+0

コードに%sがありましたが、ここで貼り付けるのを忘れました。 – viveksinghggits

1

するためには、次の例を考えてみメモリには問題がありません:

#include<stdio.h> 
#include<stdlib.h> 

int main(){ 
    char * ans = NULL; 
    // memory allocation 
    ans = (char*) malloc(5 * sizeof(char)); 
    if(ans == NULL) // check memory 
     return 1; // end of program 
    printf("Enter yes or no : "); 
    // reading input with length limitation 
    scanf("%4s", ans); 
    // string output 
    printf("You just entered %s\n", ans); 
    return 0; 
} 

4文字以上入力すると、5番目以降の文字はスキップされます(入力バッファに残っています)。

関連する問題