为什么用c-free5编程序总有错,但是在其他编译器上没错

#include<stdio.h>
#include<math.h>
int main(void)
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1)
{
m=acos(y)*10;
for(x=1;x<=m;x++)
{
printf(" ");
printf("*");
}
for(;x<=62-m;x++)
{
printf(" ");
printf("*\n");
}
}
return 0;
}

就是这个问题

那把整个文件路径上的空格和“-”去掉,就好了。

上面这个路径是修改后可以运行的,没修改前是c-free5(cc++集成开发环境)

路径中不能有空格和特殊字符,比如“-”之类的,你检查下文件名是不是带有“-”,

这个文件的默认文件名就是c-free5中间的“-”是不能有的,

你再看下路径中的其他文件是不是有上述问题。所以我把路径c-free5中的“-”去掉了就正常。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-08-21
这不是程序的问题,是你选择的编译器gcc.exe选择的位置错误了,系统没有找到编译器,所以编译失败。请检查你的mingw安装位置,gcc编译器位于mingw\bin下面。然后重新配置你的IDE中关于编译器的部分,应该就能编译了
第2个回答  2017-08-20
这可能跟你的那几个strncpy的使用方式有关。我查了一下这个函数的手册,大致是这么说。这个函数在源比size大时,copy size个字符,不包括null。在源小于size时,向目标填充足够的null,直至size指定的大小,这是标准C规定的。
这意味着你的调用点会造成多个缓冲区越界,因为它们都被追加了很多0.(我想你的几个参数应该都不到100大小吧?)
试着用正确的方式改写那部分再试试
任何时候都应该检查目标缓冲区是否有足够的空间容纳size个字节,当用memcpy或者strncpy这类函数时。
或空间是否不小于源缓冲区,当用strcpy这类自动检查null结尾的函数时,还要算上copy会自动包含的null结尾。
第3个回答  2017-08-20
找到你c-free的文件在哪,我一开始也出现这个问题,你看下那个cfree后面的数字分开了一个
列c-free 5
你重命名下改成c-free5在打开就好了
第4个回答  2019-11-08

我这个才叫无语

相似回答