c中的scanf命令有问题(在论坛中找不到其他地方)

c中的scanf命令有问题(在论坛中找不到其他地方),c,C,上面这是我正在处理的一个项目的代码,但是当我编译代码并运行它时,它被scan f命令卡住了,我不知道出了什么问题,我已经尝试了fflush命令,并且我有正确的格式和符号 您的扫描格式不正确 FILE *datapad; char filename[20]; printf("please enter file \n"); scanf(" %s", &filename); fflush(stdin); printf("processing"); datapad = fopen(filenam

上面这是我正在处理的一个项目的代码,但是当我编译代码并运行它时,它被scan f命令卡住了,我不知道出了什么问题,我已经尝试了fflush命令,并且我有正确的格式和符号

您的扫描格式不正确

FILE *datapad;
char filename[20];
printf("please enter file \n");
scanf(" %s", &filename);
fflush(stdin);
printf("processing");
datapad = fopen(filename,"r");
输出:

main()
{
    char filename[20];
    printf("please enter file \n");
    scanf("%19s", filename);
    printf("processing %s...\n", filename);
}

您将文件名作为字符数组,这里您将使用scanf函数传递不正确的文件名。可以通过两种方式将数组作为参数传递:

1 filename:将数组的名称作为参数传递,它将指向数组的第一个元素

2&filename[i]:传递数组的第i个元素,这在必须传递除第一个元素以外的元素作为参数的情况下很有用:

以下是正确的程序:

please enter file
/we/sd/xc
processing /we/sd/xc...

首先,删除&。它不属于那里。另外,您可能希望在处理结束时换行。@Dyz%s之前的空格是无害的。它过滤掉了前导空格,但使用了%s,这无论如何都会发生。fflushstdin;是未定义的行为。请发布显示问题的。将输入、预期输出和实际输出显示为texttrouble使用scanf实际上是一种重言式。scanf不适合初学者。停止使用它。
FILE *datapad;
char filename[20];
printf("please enter file \n");
scanf(" %s",filename);
fflush(stdin);
printf("processing");
datapad = fopen(filename,"r");