Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C文件损坏-可能修复?_C_File - Fatal编程技术网

C文件损坏-可能修复?

C文件损坏-可能修复?,c,file,C,File,我昨天运行了一个C文件,它运行得非常好。现在,当我试图打开它时,它是一团混乱(只有1和0,中间还有一些随机字母)。我不知道发生了什么,但这是一个有点危机,因为我需要在大约2小时内为一个学校项目提供这个。有人知道问题出在哪里吗 正如评论中提到的,这个问题最有可能的原因是您用可执行文件重写了源文件,可能是通过以下方式编译的 gcc myfile.c -o myfile.c 在我这样做了一次之后,我编写了以下简单的脚本,以避免再次这样做。该脚本将单个文件名作为输入,剥离扩展名以创建输出文件名,验证输

我昨天运行了一个C文件,它运行得非常好。现在,当我试图打开它时,它是一团混乱(只有1和0,中间还有一些随机字母)。我不知道发生了什么,但这是一个有点危机,因为我需要在大约2小时内为一个学校项目提供这个。有人知道问题出在哪里吗

正如评论中提到的,这个问题最有可能的原因是您用可执行文件重写了源文件,可能是通过以下方式编译的

gcc myfile.c -o myfile.c
在我这样做了一次之后,我编写了以下简单的脚本,以避免再次这样做。该脚本将单个文件名作为输入,剥离扩展名以创建输出文件名,验证输出文件名实际上与输入文件名不同,然后调用编译器

if [[ $1 == "" ]] 
then echo Usage: scc filename.c; echo; exit 
fi

if [[ $2 != "" ]]
then echo Sorry, only one parameter is allowed; echo; exit
fi

fullfilename=${1}
basefilename=${1%.c}

if [[ $basefilename == $fullfilename ]]
then echo "Error: invalid filename"; echo; exit
fi

echo gcc -Wall $1 -o $basefilename
gcc -Wall $1 -o $basefilename
在我的系统上,脚本文件路径是“~/utils/sensibleCC”,我的shell启动文件中有以下行

alias "scc=~/utils/sensibleCC"
这样,如果我键入以下命令

scc hello.c 
编译器是用

gcc -Wall hello.c -o hello

我打赌当你编译它的时候,你把编译过的文件放在源代码文件的上面。你打开错文件了吗?是否用二进制文件覆盖源?编码问题?你能做一个黑加法器风格的重写吗?代码运行正常,因此您已经知道如何构建它以及存在哪些bug。此外,您的编辑器是否进行了自动备份?如果是这样,现在不保存并退出,只需退出即可@MartinJames是的,但你不是整夜都在试图定义土豚,结果却被原作者烧掉了吗?或者,使用
make
的隐含规则:
make hello
@juanchopanza Ok,但是如何将
-Wall
放入命令行。通过设置
CFLAGS=-Wall-Wextra-other_标志,您可能需要
生成文件中的
,该文件位于您调用
make
的同一目录中。@juanchopanza好的,谢谢。您应该将其作为答案发布,然后您将获得我的投票:)或
export CFLAGS=“-Wall-Wextra”
来设置标志,从而避免需要生成文件。