gpt4 book ai didi

c - 如何使用字符串打开二进制文件?使用 C

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:28 24 4
gpt4 key购买 nike

我的印象是,要使用字符串打开二进制文件,您可以简单地创建字符串,然后将其实现为读取字符串的文件名。这就是我的讲义所说的。但是我显然遗漏了一些东西。我在 fopen 中使用了 &name, name, &name[SIZE] 并且每次我得到 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[0]);

甚至只是:

scanf("%s", name);

您的 &name[SIZE] 指向 name + SIZE超出分配的内存。

关于c - 如何使用字符串打开二进制文件?使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7224951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com