如何使用char将字符串传入fopen C

hm2xizp9  于 2023-03-01  发布在  其他
关注(0)|答案(1)|浏览(198)

我试过使用下面的代码将一个char传递给一个字符串,然后打开一个.txt文件,这样我就可以读取它的内容。我不知道为什么以及如何使用这个fopen来实际读取test.txt

int main(){

char input[60];

char a;
FILE *file;

printf("Hello!\n");

    enter code here

printf("Pelase input a file name in .txt format: \n");
gets(input);

printf("%s",input);
printf("\n");

**file = fopen("%c,input","rt");**

//文件= fopen(“%s”,输入)〈--不起作用
//文件= fopen(“%s”,输入,rt)〈--错误

if (file){

  while((a=fgetc(file))!=EOF){

        printf("%c",a);
    }
    fclose(file);

}
}
2g32fytz

2g32fytz1#

如果您想将".txt"添加到用户输入的任何内容中,然后打开该文件,您可以用途:

gets (input);
strcat (input, ".txt");
file = fopen (input, "r");

注意,我并不提倡使用gets,也不提倡在不检查缓冲区大小的情况下盲目地追加缓冲区,但这是实现您所需的最小必要更改,请参阅下面的内容了解为什么这两件事是一个坏主意。

  • 当前代码的其他问题:*
  • fgetc()的返回值为,因此a的类型应为int
  • gets()函数本质上是不安全的,已经从标准中删除。使用fgets()或找到一个安全的用户输入函数。
  • 永远不要盲目地追加到缓冲区。就像使用gets()和某些scanf()字符串一样,它将允许代码中的缓冲区溢出。

相关问题