私は、文字列を使ってバイナリファイルを開くという印象を受けていましたが、単に文字列を作成して文字列を読み込むファイルの名前として実装するだけでした。これが私の講義ノートです。しかし、私は恥ずかしそうに何かを逃している。私は&名前、名前、&名前[SIZE]をfopen内で使用しました。コメント付きの行を使用しない限り、inBinFile == NULLを取得するたびに使用されています。私の文字列は正しいです。どうしましたか?ヘルプは非常に感謝しています。前もって感謝します。文字列を使用してバイナリファイルを開くにはどうすればよいですか?
#include <stdio.h>
#include <stdlib.h>
#define SIZE 25
int frstmenu(void);
int sndmenu(void);
int main()
{
int fmenu, smenu;
char name[SIZE];
FILE *inBinFile;
unsigned char numRead;
fmenu = frstmenu();
if (fmenu !=1 && fmenu !=2)
{
printf("\nIncorrect option\n");
fmenu = frstmenu();
}
if (fmenu == 1)
{
printf("\nEnter the file name: \n");
scanf("%s", &name[SIZE]);
/* printf("filename: %s", &name[SIZE]); */
smenu = sndmenu();
if (smenu !=1 && smenu !=2)
{
printf("\nIncorrect option\n");
smenu = sndmenu();
}
if (smenu == 1)
{
inBinFile = fopen(name, "rb");
/* inBinFile = fopen("stream.grc", "rb"); */
if (inBinFile == NULL)
{
fprintf(stderr, "Error opening %s", &name[SIZE]);
return(-1);
fclose(inBinFile);
}
}
return(0);
}
int frstmenu()
{
float selection;
printf("----Menu----\n");
printf("1 Open a file (supported format: .grc)\n");
printf("2 Exit the program\n");
printf(" Please select an option (1 or 2): ");
scanf("%f", &selection);
return(selection);
}
int sndmenu()
{
int selection;
printf("---Menu---\n");
printf("1 Decode the sequence\n");
printf("2 Exit the program\n");
printf(" Please select an option (1 or 2):\n");
scanf("%i", &selection);
return(selection);
}
**最小**のコード例をご覧ください。 –
'scanf("%s "、name);は正しいものです。 'printf("読み込みファイル名は%s \ n "、name);です。 – fvu