本文目录一览:
- 1、c语言源程序文件经过连接后生成文件的扩展名是什么?
- 2、如何编译C语言源代码
- 3、devc怎么才能生成源代码啊?
- 4、求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释
- 5、C语言源代码是什么
- 6、求C语言单链表 源代码
c语言源程序文件经过连接后生成文件的扩展名是什么?
选择C.”.exe“
解析如下:
文件编辑的时候源码是CPP扩展名,C++头文件是.H扩展名。编译源程序文件转换成.obj扩展名的目标文件。链接将一个或多个目标文件与程序用到的库文件链拉起来,形成一个可以在操作系统直接运行的执行程序.exe。
也就是整个过程分为:预编译,对源代码的宏进行替换,生成中间文件(文本,默认不保留)》》翻译为汇编代码(文本,默认不保留)》》由汇编器生成二进制文件(.obj)》》连接为可执行文件(.exe)。
扩展资料
一、编译
目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:
①可以立即执行的机器语言代码,所有地址都重定位;
②待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
③汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如茄亮何生成较短的目标代码;二是如何充分利用计算机中的寄存器圆纳唯,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。
二、高级程序设计语言C
程序的编译
编译是指将编辑好的源文件翻译成二进制目标代码的过程。编译过程是由编译程序(编译器)完成的。不同操作系统下的各种编译器的使用命令不完全相同,使用时应注意计算机环境。编译时,编译器首先要对源程序中的每一个语句检查语法错误,当发现错误时,就在屏幕上显示错误的位置和错误类型橘培的信息。
此时,要再次调用编辑器进行查错修改。然后,再进行编译,直至排除所有语法和语义错误。正确的源程序文件经过编译后在磁盘上生成目标文件(后缀名为.obj的文件)。程序的连接
编译后产生的目标文件是可重定位的程序模块,不能直接运行。连接就是把目标文件和其他必需的目标程序模块(这些目标程序模块是分别编译而生成的目标文件)以及系统提供的标准库函数连接在一起,生成可以运行的可执行文件的过程。连接过程使用C语言提供的连接程序(连接器)完成,生成的可执行文件(后缀名为.exe的文件)存到磁盘中。
程序的运行
程序经过连接生成可执行文件后,就可以在操作系统控制下运行.若执行程序后达到预期目的,则C程序的开发工作到此完成.否则,要进一步检查修改源程序,重复编辑-编译-连接-运行的过程,直到取得预期结果为止。
如何编译C语言源代码
1、以GCC编译器为例,可以分为四步。
第一步是纯扮薯预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文做者件,这个文件里缺搏就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
2、目标代码包括机器码和符号表(函数及变量名)。连接器的主要作用是通过符号表在库文件和其他模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。
devc怎么才能生成源代码啊?
devc源文件未编译的方法。
如下参考:
1.首先,打开dev-c++,点击菜单栏中的“工具”,点击“编辑/翻译选项”,打开编译选项对话框。
2.然后,我们在编译时选择以下命令,并在连接器级别的命令行中选择以下命令。
3、在“编译时加入以下命令”和“在连接器命令行加入以下腊碰命令”复选框槐运下的两个文本框中各输入“-g3”(不包括双引号)。
4.点击“代码生成内部化/优化”选项卡,点击“连接器”栏,点击“生成调试信息”栏右侧的复选框,将其更改为“是”,然后点击底部的“确定”。
5.最后,重启dev-c++来解决这个问轮明谈题,如下图所示。
求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释
最简单的那种?我给你写一个=,=
//服务器
#include sys/stat.h
#include fcntl.h
#include errno.h
#include netdb.h
#include sys/types.h
#include sys/socket.h雹戚
#include netinet/in.h
#include arpa/inet.h
#include string.h
#include stdlib.h
#include stdio.h
#include unistd.h
main()
{
//创建套接字
int serverSocket= socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in server_addr;
struct sockaddr_in clientAddr;
int addr_len = sizeof(clientAddr);
int client;
char buffer[200];
//创建地址
bzero(server_addr,sizeof(server_addr));
server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(5555);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
//绑定
bind(serverSocket,(struct sockaddr *)server_addr,sizeof(server_addr));
//帧听
listen(serverSocket,5);
printf("客户端发过来的 :\n");
/源悉陵/接收
client=accept(serverSocket,(sockaddr *)clientAddr,(socklen_t*)addr_len);
printf("客户端发过来的 :\n");
while(1)
{
if(recv(client,buffer,sizeof(buffer),0)0)
printf("客户端发过来的 : %s\n",buffer);
}
return 0;
}
//客户端
#include sys/stat.h
#include fcntl.h
#include errno.h
#include netdb.h
#include sys/types.h
#include sys/socket.h
#include netinet/in.h
#include arpa/inet.h
#include string.h
#include stdlib.h
#include stdio.h
#include unistd.h
main()
{
struct sockaddr_in serverAddr;
int clientSocket=socket(AF_INET,SOCK_STREAM,0);
char sendbuf[200];
//创建地址信息
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(5555);
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
//连接服务器
connect(clientSocket,(sockaddr*)serverAddr,sizeof(serverAddr));
printf("连接目标主机中.....\n连接完成......\n");
//
while(1)
{
printf("请输入发给服务器的数据 : ");
scanf("陆漏%s",sendbuf);
//strcmp函数作用,比较两个东东(按ASCII值大小相比较),相同就==0。
if(strcmp(sendbuf,"x")==0)
break;
send(clientSocket,sendbuf,sizeof(sendbuf),0);
}
close(clientSocket);
return 0;
}
C语言源代码是什么
数字版“拼图”游戏C源代码:
#includetime.h
#includestdio.h
#includestdlib.h
#includeconio.h
#includewindows.h
int i, j, r, k; //i、j、r用于循环, k存放随机数值
int m, n; 伍则族 // m、n是当前空位的下标, t标记排序是否成功
int a[4][4]; //存储4×4共16个数字的数组
void show(void); //输出数组表格
void csh(void); //初始化界面
int yes(void); //判断排序是否成功
void up(void); 盯团 //数字向上移动到空位(空位则下移)
void down(void); //数字向下移
void left(void); //数字向左移
void rght(void); //数字向右移
void inkey(void); //按键操作
void gtxy(int x, int y) ; //控制光标移动的函数
int main(void)
{ while(1)
{csh( );
while(1)
{ inkey();
show();
if ( yes( ) )
{gtxy(6,12); printf("你成功了! 再来一局y/n?"); break;}
}
if(getch( )== ʹnʹ)break;
腔弊 }
return 0;
}
void csh(void)
{ r=0;
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),cursor_info);
for(i=0;i4;i++) //给数组a依序赋值
for(j=0;j4;j++)
{ if (i==3 j==3) a[i][j]=0;
else a[i][j]=1+r++;
}
a[3][3]=a[1][1]; a[1][1]=0; //把a[3][3]与a[1][1]的值交换一下
m=1; n=1;
srand((unsigned)time(0)); //初始化随机数发生器
for(r=0;r500;r++) //将数组各值打乱
{ k=rand( )%(4); //取0-3随机数,分别代表上下左右四个方向
switch(k)
{ case 0: { up( ); break; }
case 1: {down( ); break; }
case 2: { left( ); break; }
case 3: { rght( ); break; }
}
}
printf("\n\n\t\t 数字拼图");
printf("\n\t┌──────┬──────┬──────┬──────┐");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t├──────┼──────┼──────┼──────┤");
printf("\n\t│ │ │ │ │");
printf("\n\t└──────┴──────┴──────┴──────┘");
show( );
}
void show(void)
{for(i=0;i4;i++)
for(j=0;j4;j++) //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字
{gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │");
else if(a[i][j]9)printf(" %d │",a[i][j]);
else printf(" %d │",a[i][j]);
}
}
void inkey(void)
{ int key;
key=getch( );
switch(key)
{ case 72: { up( ); break; }
case 80: {down( ); break; }
case 75: {left( ); break; }
case 77: { rght( ); break; }
}
}
void up(void)
{ if (m!=3) //移动时要考虑空位"0"是否已经在边界
{ a[m][n]=a[m+1][n]; m++; a[m][n]=0; }
}
void down(void)
{ if (m!=0)
{a[m][n]=a[m-1][n]; m--; a[m][n]=0; }
}
void left(void)
{ if (n!=3)
{ a[m][n]=a[m][n+1]; n++; a[m][n]=0; }
}
void rght(void)
{ if (n!=0)
{ a[m][n]=a[m][n-1]; n--; a[m][n]=0; }
}
int yes(void)
{ r=0;
for(i=0;i4;i++)
for(j=0;j4;j++)
{ if (a[i][j]!=1+r++) return (r==16)?1:0; }
}
void gtxy(int x, int y) //控制光标移动的函数
{ COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
求C语言单链表 源代码
#includestdio.h
#includestdlib.h
#includestring.h
struct people
{
char name[10];
int age;
struct people * next;
};
int main()
{
struct people * head=NULL;
struct people * prev , * current;
int flag=1;
while(flag!=0)
{
printf("请输入学生姓名,年宏凯龄:(年龄输入0结束所有输入工作)\n");
current=(struct people *)malloc(sizeof(struct people));
if(head==NULL)
head=current;
else
prev-next=current;
前裂 current-next=NULL;
scanf("%s",current-name);
scanf("%d",current-age);
prev=current;
flag=current-age;
}
printf("Output:\n");
if(head==NULL)
printf("无资料慧绝闭。\n");
else
{
current=head;
while(current-next!=NULL)
{
printf("姓名:%s\n年龄:%d\n\n",current-name,current-age);
current=current-next;
}
}
}
至于排序,断开旧链表,将前后指针链接到新的节点就好
如果还有问题欢迎再问哈