-1
私は、次のコードを持っている:次のCコードはなぜdevC++ではなくturbo cで動作しますか?
char *str;
gets(str);
は、今ではターボCで動作しますが、DEVC中に失敗しました。
devC++で動作させるには、以下を追加する必要があります。
誰も説明することはできますか?
また、本物でより正確なコーディング形式です。
私は、次のコードを持っている:次のCコードはなぜdevC++ではなくturbo cで動作しますか?
char *str;
gets(str);
は、今ではターボCで動作しますが、DEVC中に失敗しました。
devC++で動作させるには、以下を追加する必要があります。
誰も説明することはできますか?
また、本物でより正確なコーディング形式です。
char *str;
gets(str);
だけはは、右することはできませんことを。 str
は初期化されておらず、gets
はポインタを値で受け取り、内部的に割り当てることができません。あなたはちょうど未定義の振る舞いで幸運/不運です。
どちらが本物で正しいコーディング形式ですか?
上記のうちどれも該当しません。 gets
を使用しないでください。入力サイズを制限できないため、安全ではありません。 (!そしてもちろん割り当てられたバッファ)指定されたサイズでfgets
を使用
#include <stdio.h>
char buffer[20];
fgets(buffer, sizeof(buffer), stdin); // reads at most 19 chars + null-termination
またはscanf
をサイズ制限を(-1に注意してください):scanf("%19s",buffer);
1)は使用しません ')(取得' 2)割り当てられていない文字列の未定義の動作。 –
ポインタにメモリが割り当てられていないため、「Turbo Cで動作する」というのは謎です。 –
あなたは['gets'](http://en.cppreference.com/w/c/io/gets)を読みたいかもしれません。 –