c を使用してファイルを作成/開こうとしています。fgets コマンドを使用して名前を入力するので、次のようにバッファをオーバーフローさせることはできません。
void main() {
printf("Enter file name: ");
char * fileName = (char *) calloc(MAX_BUFFER_SIZE, sizeof(char));
fgets(fileName, MAX_BUFFER_SIZE, stdin);
FILE *inputFile = fopen(fileName, "w");
if(inputFile==NULL) perror(fileName);
}
デバッガーを使用すると、ファイル名に入力した値が希望どおりであることがわかりますが、fopen 関数は NULL ポインターを返し、「無効な引数」エラーが発生します。代わりに使用scanf("%s", fileName)
しても問題はなく、ファイルが作成されますが、この方法ではバッファがオーバーフローする可能性があります。最初の例が機能しない理由はありますか? 前もって感謝します :)