C 为什么VS代码中的终端不符合带空格的文件名?

C 为什么VS代码中的终端不符合带空格的文件名?,c,C,我编写了一个简单的HelloWorld C程序,并在VS代码中将其保存为C program.C 我遇到以下错误: PS E:\C>gcc C程序.C gcc.exe:错误:C:没有这样的文件或目录 gcc.exe:错误:Program.c:没有这样的文件或目录 gcc.exe:致命错误:没有输入文件 编译终止 虽然当我把这个名字改为CProgram.c时,它被编译并给出了输出 PS E:\C>gcc CProgram.C PS E:\C>\a.exe 你好,世界 请提供一种解决方案,以执行名称中

我编写了一个简单的HelloWorld C程序,并在VS代码中将其保存为C program.C

我遇到以下错误:

PS E:\C>gcc C程序.C
gcc.exe:错误:C:没有这样的文件或目录
gcc.exe:错误:Program.c:没有这样的文件或目录
gcc.exe:致命错误:没有输入文件
编译终止

虽然当我把这个名字改为CProgram.c时,它被编译并给出了输出

PS E:\C>gcc CProgram.C
PS E:\C>\a.exe
你好,世界


请提供一种解决方案,以执行名称中带有空格的.c文件。

空格用作命令行参数的分隔符,因此如果要传递带有空格的文件名,必须将字符串用
包围

PS E:\C> gcc "C Program.c"

您需要将文件名用引号括起来(某种形式——在类Unix系统上,单引号或双引号都可以):

如果没有引号,您将在命令行上提供三个单独的参数,
gcc
C
Program.C
,并且文件
C
Program.C
不存在,因此您将得到显示的错误

如果您在Windows上,可能需要使用双引号


但是,如果您放弃在源代码文件名中使用空格,您的生活会更轻松。

我不会在文件名中使用空格。你的问题有解决方案,但通常很麻烦;您可以将它们编译成可以执行的程序。然后执行编译后的程序。如果没有用空格引用字符串,那么编译器如何知道
gcc-option my file.c
意味着
gcc-option“my file.c”
gcc”-option my file.c“
gcc”-option my”file.c
?所有这些都是有效的文件名
gcc "C Program.c"
gcc 'C Program.c'