导航:首页 > 源码编译 > c语言编译通过后报错

c语言编译通过后报错

发布时间:2022-05-18 19:14:23

㈠ C语言编译错误如何解决

C语言编译错误如何解决,
办法就是逐条分析编译错误提示输出的信息,并按照提示修改,
没有捷径,只能一条条地把编译出错的地方修改掉。
建议从前往后改,因为有可能后面的错误都是第一条的错误引起的。
所以可以改完几条就重新编译下,看修改的地方是否通过编译了。
如此循环,直到消除所有的错误。
请采纳,谢谢

㈡ C语言 编译成功,运行后不久就错误 .各位帮忙。

#include <stdio.h>
#include <malloc.h>
#define listsize 100
typedef struct ys
{
int *e;
int length;
};
main()
{int m,i,a,e,z,k,b;
int *p;
int *q;
struct ys *M,kk; /////////////这个地方应该是struct ys *M,我不知道你的语句 ys *m 是怎么编译通过的,如果你真的通过了,可能是编译器不同的原因吧,另外,你输入m后报错,是因为你原文中M是作为一个结构体指针来使用的,你没有初始化它以此在内存中给他分配空间,这时的M就是一个野指针,所以直接给M->e赋值就会出现“read”或者“written”的错误
printf("请输入多少个:");
scanf("%d",&m);
kk.e=(int*)malloc(listsize*sizeof(int));
kk.length=0;
M=&kk; ////////////////////////要在这里为M初始化
printf("输入:");
for(i=0;i<=m-1;i++)
{
scanf("%d",&k);
M->e[i]=k;
M->length++;
}
printf("输入操作:1为加,2为减,0为不改:");
scanf("%d",&a);
while(a)
{
switch(a)
{
case 1: printf("加的数为:");
scanf("%d",&e);
printf("加位置为:");
scanf("%d",&b);
q=&(M->e[b-1]);
for(p=&(M->e[M->length-1]);p>=q;--p) *(p+1)=*p;
*q=e;++M->length;break;
case 2: printf("减第几个数:");
scanf("%d",&b);
p=&(M->e[i-1]);
e=*p;
q=M->e+M->length-1;
for(++p;p<=q;++p) *(p-1)=*p; M->length--;break;
}
printf("输入操作:1为加,2为减,0为不改:");
scanf("%d",&a);
}
for(k=(M->length/2),i=0;i<k;i++)
{z=M->e[i];
M->e[i]=M->e[M->length-1];
M->e[M->length-1]=z;
}
for(i=0;i<=(M->length-1);i++)
{
printf("%d",M->e[i]);
}
free(M->e ); ///////////////////////这里必须得加上这句话。至此语法上没什么问题了
}

㈢ C语言程序编译成功了,为什么连接还出错

1 编译阶段,执行的是对单个文件的转换,从源代码转换成二进制文件。
2 链接阶段,将每个源文件转成的二进制文件,及相关的系统库文件共同打包生成可执行文件。
3 从定义上可以看出,链接阶段,出现错误有两种可能:
1) 函数中引用了不存在的函数。
2) 编译环境有问题,导致ld出错。

㈣ C语言习题求助,编译通过,运行错误,高分求解

由于 C 语言本身的最大特点就是:其不仅是编程格式上非常地自由,而且在对其进行编译时也是非常自由的(编译器能够放过去很多它认为不是问题的问题),但自由的同时也给程序员带来了程序调试和运行上的困难。有些错误在编译的时候是能够发现的(例如:程序语法错误)、而有些错误在编译程序的时候却是不能够被发现的,只有到了执行程序的时候,才会发现程序的运行结果错误。你可以参考我下面提供的类型,希望能够对你有些帮助。
Warning 警告类型错误有很多种。例如:(1)、虽然定义了某个变量,但是没有对其是否成功初始化就使用、(2)、把赋值符号的等于(=)写成了逻辑相等(==),等等。
例如对于(1)而言:

#include <stdlib.h> /* malloc( ) 函数原型在此头文件中定义 */
void main( )
{
char * p ;
p = (char *)malloc(10000)*sizeof(char) ; /* 为指针变量 p 动态分配内存 */
if( p == NULL ) /* 内存分配失败,返回 NULL */
{ /* 该段代码用于判断是否为指针变量 p 成功分配到内存,是必不可少的 */
printf("Memory allocation failured !\n") ;

exit(1) ; /* 若内存分配失败,退出应用程序,否则的话,严重的话,就有可能使系统崩溃!!! */

}
strcpy(p, "This is a test string") ; /* 内存分配成功,将字符串的内容复制到 p 中 */
}
例如:再对于(2)而言:
void main( )
{
int num ;

scanf("%d", &num) ;

if( num == 10 )

printf("You input number is: 10 !\n" ) ;

else

printf("You input number is not 10 !\n" ) ;

}
但是如果在这个程序中,把双等号:== 误写成了:=,那么该语句就变成了:if( num = 10 )
那么该语句产生的效果就是:无论你在 scanf( ) 语句中输入任何数字(任意的正数也好、负数也好),程序总是把 10 这个整数赋给变量 num,那么其逻辑表达式的值总为 1,所以则该程序的运行结果总是:You input number is: 10。
像这样的程序错误都属于 Warning 错误,在编译的时候是发现不了的,只有到运行程序的时候,才会发现程序的运行结果不正确。

㈤ 关于c语言,能通过编译和调试,但是运行的时候总报错,求指导

题目“删除表所有大于k1而小于k2元素”
而其中k1,k2不一定在表中,所以可能所有数据都被删掉
int
Delete_SeqList(SeqList
*L,int
x,int
y)这个算法需要改一下,图片情况应该是溢出现象
代码现在补上:
#include<stdlib.h>
#include<stdio.h>
typedef
struct
{
int
data[20];
int
last;
}SeqList;
SeqList
*Init_SeqList()
{
SeqList
*L;
L=(SeqList
*)malloc(sizeof(SeqList));
L->last=-1;
return
L;
}
int
Scanf_SeqList(SeqList
*L)
{
int
i=0,x;
scanf("%d",&x);
while(x!=999)
{
L->data[i++]=x;
scanf("%d",&x);
}
L->last=i-1;
return
1;
}
//下面开始改了,上面没有改
//ps:我用的是TC,它不支持中文,所以把中文全改了
int
Delete_SeqList(SeqList
*L,int
x,int
y)
{
int
st=0,la=L->last,i;
if(x>y)
return
0;
while(L->data[st]<=x)
st++;
while(L->data[la]>=y)
la--;
for(i
=
st;i<=la&&L->last
!=-1
;i++)
{
L->data[i]
=
L->data[la];
L->last--;
}
return
1;
}
int
main()
{
SeqList
*L;
int
k1,k2,i;
L=Init_SeqList();
printf("input:\n");
if(Scanf_SeqList(L))
printf("success!\n");
else
printf("error!\n");
printf("k1,k2(k1<k2):\n");
scanf("%d,%d",&k1,&k2);
if(Delete_SeqList(L,k1,k2))
{
for(i=0;i<=L->last;i++)
printf("%d
",L->data[i]);
printf("over");
}
else
printf("error!");
return
(0);
}
求采纳

㈥ 为什么c语言编译明明成功了运行时却说编译失败

这个程序是没有问题的,在VC6.0下是完全可以运行的。
编译成功的话,运行应该也是可以的。
只有你保证你工程中就一个main函数。
另外你运行时编译失败的提示信息是什么,可以贴出来。

㈦ C语言程序,编译成功,但是运行时报错

int main(){
int*a;
int i=0;
int n,k;
scanf("%d,%d",&n,&k); //变量用地址,注意格式控制,输入时两数间也要有逗号,如2,2
a=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
scanf("%d",&a[i]); //&a[i]
}
patition(a,a[0],4,a[n]);
free(a);
return 0;
}
//程序可能还有其他问题,能执行,但没有输出。

㈧ C语言编译报错,不知道原因

VC里面错误的原因是:变量声明位置问题。

在C语言里,变量只能在函数的开头处声明和定义。在函数里要用到的变量必须要在开头处声明定义。声明定义的前面不能有任何其他非声明定义的语句。全局变量在函数体的外部声明定义。而C++里(.CPP文件是按C++标准编译的),只要在用到变量前对该变量进行声明定义就行了,位置不做特别要求。而C语言的就定了在一个模块里(函数、循环体等)先声明一切所需变量后才能进行相关操作的规定。

c-free不严谨。

㈨ 我在做C语言时遇到一个问题,编译可以通进过,但连接不能通过错误提示如下

是不是这个错误"linker
error
:undefined
symbol
'_printf'"????
如果是的这个错误的话,则
在源文件中使用了没有定义过的符号_printf。有两个可能:
(1)工程中的所有.c源文件中都没有定义过_printf。
(2)定义了_printf的源文件被编译成.obj文件后没有和modle
5.obj一起进行链接
你可能没有包含相关的头文件吧

阅读全文

与c语言编译通过后报错相关的资料

热点内容
劫掠命令 浏览:371
单片机每个程序的含义 浏览:748
学好玩命令方块 浏览:953
手机解压两个分开的压缩包 浏览:963
程序员想调薪怎么和领导说 浏览:856
编译的底层实现 浏览:550
32位机器上编译出64的动态库 浏览:924
python办公数据类型 浏览:913
传统8051单片机介绍 浏览:628
app拉新公司如何运营 浏览:618
枪法pdf 浏览:62
ios如何设置安卓虚拟返回键 浏览:697
mysql命令执行sql 浏览:97
惠普内嵌服务器怎么打开 浏览:413
cmd命令查看网络 浏览:819
程序员秘密 浏览:932
如何宣传app引流 浏览:73
图说红楼梦中央编译 浏览:173
php查询赋值 浏览:271
java程序员面试宝典第四版pdf 浏览:931