当前位置:首页 » 编程语言 » c语言联机

c语言联机

发布时间: 2022-06-10 10:06:06

A. 求一个C语言编写的可联机的五子棋程序,一定要可联机的!!!

哈哈 ,谁有那样的时间啊!

B. 谁能具体形象的解释一下什么叫 联机命令(语言)

UNIX 命令大多数可用联机帮助手册 man 获得帮助,下面是常用命令及简单说明. 命令 功能简述 acctcom 等于进程记帐文件 accton 启动或中止记帐进程 adb 汇编语言调试工具 admin 创建和管理SCCS文件 ar 档案文件和库文件管理程序 as 汇编器 asa 回车控制 在指定时间执行程序 awk 模式搜索和处理语言 banner 制作标题 basename 生成文件基本名(无前。后缀) batch 命令的延迟执行 bc 计算器 bdiff 大型文件比较 bfs 大文件搜索 break 退出循环 cal 打印日历表 calendar 打印日历表 cancel 取消打印任务 case 分支语句 cb C语言整理程序 cd 改变当前目录 cc C语言编译器 cdc SCCS实用程序

麻烦采纳,谢谢!

C. C语言的问题

本文描述了Win32编译器对C语言结构空间的分配原则,以及如何利用这些原则
更好的编写应用程序。该原则可以被推广到非Win32系统(如Digital UNIX、
Linux等)。

------------------------------------------------------------------------
--------

正文:

C编译器对结构空间的分配及其应用

C编译器对结构空间缺省的分配
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(
如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联
合等等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(
alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储
第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量
或是数据单元按其自然对界条件分配空间,见表1:

-----------------------------------------
|数据类型| 地址对界情况 |
|---------------------------------------|
|char 1 |
|short 2 |
|int 4 |
|long 4 |
|float 4 |
|double 8 |
|pointer 4 |
|struct 任意成员要求的最大对界 |
|union 第一个成员所要求的对界 |
|---------------------------------------|

表1:Win32下的自然对界条件
例如,下面的结构各成员空间分配情况如图1:
struct test {
char x1;
short x2;
float x3;
char x4;
};

31 16 15 8 7 0
--------------------------------------------
| short x2 | |char x1 |
|-------------------------------------------|
63| float x3 |
|-------------------------------------------|
95| |char x4 |
---------------------------------------------
图1:缺省结构空间分配

结构的第一个成员x1,其偏移地址为0,占据了第1个字节。第二个成员x2为
short类型,其起始地址必须2字节对界,因此,编译器在x2和x1之间填充了一个空
字节。结构的第三个成员x3和第四个成员x4恰好落在其自然对界地址上,在它们前
面不需要额外的填充字节。在test结构中,成员x3要求4字节对界,是该结构所有
成员中要求的最大对界单元,因而test结构的自然对界条件为4字节,编译器在成
员x4后面填充了3个空字节。整个结构所占据空间为12字节。

结构中的位段
所谓位段是以位为单位定义长度的结构体类型中的成员。编译器对结构中位段
的分配遵从下面几点原则:
? 对于长度为0的位段,其下一个位段从下一个存储单元开始存放:
如:
struct T {
unsigned char a : 1;
unsigned char b : 2;
unsigned : 0;
unsigned c : 3;
};
结构T的成员a和b在一个存储单元中,c则在另一个存储单元中。
· 一个位段必须存储在同一存储单元中,不能跨两个单元:
如:
struct T {
unsigned char a : 4;
unsigned char b : 6;
};
结构T的成员a在一个存储单元中,b则在另一个存储单元中。

更改C编译器的缺省分配策略
一般地,可以通过下面的两种方法改变缺省的对界条件:
· 使用伪指令#pragma pack ([n])
· 在编译时使用命令行参数
#pragma pack ([n])伪指令允许你选择编译器为数据分配空间所采取的对界策略,
见表2:

|--------------------------------------------|
| n | 效果 |
|--------------------------------------------|
| 1 |所有数据将会在任意字节单位上对界,不必遵|
| |守其自然对界条件,将会导致程序速度的下降|
|--------------------------------------------|
| 2 |所有非字节数据将会在偶数地址单元上对界 |
|--------------------------------------------|
| 4 |小于4字节按原有长度对界,其余按4字节对界|
|--------------------------------------------|
| 8 |小于8字节按原有长度对界,其余按8字节对界|
|--------------------------------------------|
| 16|小于16字节按原有长度对界,其余按16字节对界|
|--------------------------------------------|
表2:更改缺省对界条件
在Microsfot Visual C++中,命令行参数/Zp[n]可以改变缺省对界条件;在
Borland C++ Builder中,命令行参数-a[n]可以改变缺省对界条件。n的含义和
#pragma pack中的n相同。
例如,在使用了#pragma pack (1)伪指令后,test结构各成员的空间分配情况
如图2所示:

31 24 23 8 7 0
--------------------------------------------
| float x3 | short x2 |char x1 |
|-------------------------------------------|
63| char x4 | float x3 |
|-------------------------------------------|

图2:使用#pragma pack (1)后的结构空间分配

应用实例

我们在日常编程工作中,特别是对一些网络事务的处理,经常会同其他人有着
各种各样的协议:如我传给你20字节的头,前4个字节表示……等等。很多人都是
通过指针偏移的方法来得到各种信息,这样做,不仅编程复杂,而且一旦协议有变
化,程序修改起来也比较麻烦。在了解了编译器对结构空间的分配原则之后,我们
完全可以利用这一特性定义自己的协议结构,通过访问结构的成员来获取各种信息
。这样做,不仅简化了编程,而且即使协议发生变化,我们也只需修改协议结构的
定义即可,其它程序无需修改,省时省力。下面以TCP协议首部为例,说明如何定
义协议结构。
TCP协议首部如图3所示:

0 15 16 31
|-----------------------------------------------------|
| 16位源端口号 | 16位目的端口号 |
|-----------------------------------------------------|
| 32 位序列号 |
|-----------------------------------------------------|
| 32 位确认号 |
|-----------------------------------------------------|
|4位 |保留 |U|A|P|R|S|F| |
|首部 | |R|C|S|S|Y|I| 16位窗口大小 |
|长度 |6位 |G|K|H|T|N|N| |
|-----------------------------------------------------|
| 16位TCP校验和 | 16位紧急指针 |
|-----------------------------------------------------|

图3:TCP首部

其协议结构定义如下:
struct TCPHEADER {
short SrcPort; // 16位源端口号
short DstPort; // 16位目的端口号
int SerialNo; // 32位序列号
int AckNo; // 32位确认号
unsigned char HaderLen : 4; // 4位首部长度
unsigned char Reserved1 : 4; // 保留6位中的4位
unsigned char Reserved2 : 2; // 保留6位中的2位
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
short WindowSize; // 16位窗口大小
short TcpChkSum; // 16位TCP检验和
short UrgentPointer; // 16位紧急指针
};
其协议结构还可以定义为如下的形式:
struct TCPHEADER {
short SrcPort; // 16位源端口号
short DstPort; // 16位目的端口号
int SerialNo; // 32位序列号
int AckNo; // 32位确认号
unsigned char HaderLen : 4; // 4位首部长度
unsigned char : 0; // 保留6位中的4位
unsigned char Reserved : 2; // 保留6位中的2位
unsigned char URG : 1;
unsigned char ACK : 1;
unsigned char PSH : 1;
unsigned char RST : 1;
unsigned char SYN : 1;
unsigned char FIN : 1;
short WindowSize; // 16位窗口大小
short TcpChkSum; // 16位TCP检验和
short UrgentPointer; // 16位紧急指针
};

参考资料:
1. 《Programmer's Guide》,DIGITAL UNIX Documentation,Version 4.0E。
Compaq Computer Corporation, November 1998。
2. 微软MSDN Library Visual Studio 6.0版。
3. Borland C++ Builder 5.0联机文档。
4. 《C程序设计》,谭浩强,清华大学出版社,1991年7月。
5. 《TCP/IP详解 卷1:协议》,W. Richard Stevens着,范建华等译。机械工业
出版社,2000年4月。

D. 如何用C语言实现联机

这个必须要学习windows下的socket编程,你要是真想学就买本相关的书看看吧

E. 怎样用C语言或者是C++编写一个局域网的聊天软件特别是怎样实现软件的接口。

你的程序是客户端发请求还是主机发请求?你的IP是程序中写好了还是运行时查询得到的?端口一定不要搞错
双机互连线和点对hub线是不一样的

F. C++编写网络编程甚至联机游戏吗

dota2、CS的Source引擎就是C++写的
星际2好像也是C++写的

可以说大多数“大型3D游戏”都是C++

G. C语言问题!!关于联机

C语言编一个联机斗地主

联机一般都是使用TCP/IP通讯协议,有关的你可以查一下,C++的话说不定能帮上忙

C的话没有界面的吧,我没有办法想象怎么玩....

H. 无忧网计算机二级C语言考试大题为什么要联机

计算机二级C语言考试,在考大题目的时候一定要联机的,如果不联机的话,那么网络就会有问题,就会无法提交。

I. 学习C语言技巧

所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。

大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以网络一下:)

Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。

如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。

切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。

Unix/Linux还是Windows,这是个很大的问题

不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。

对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。

所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。

等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。

书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。

学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。

例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。

也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。

仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。

J. 我在编写C语言建立一个单链表存储数据,运行没报错,却出现联机调试等对话框,希望大神看看哪里有错误。

三个问题

1 creat函数返回值 应该是sqlist * 而不是int

2 头结点没有存数据,打印的时候应该略过头结点

3 作为链表,不应该在打印的时候用for (int i = 0; i < 4; i++) 这样的方式,而应该判断next是否为空。

voidprint(sqlist*h)
{
sqlist*p;
p=h->next;
for(;p;p=p->next)
{
printf("%d",p->date);
}
}
热点内容
一台存储可以配几个扩展柜 发布:2025-02-08 01:53:22 浏览:564
分布式存储技术优缺点 发布:2025-02-08 01:51:37 浏览:244
linuxsuse重启 发布:2025-02-08 01:49:27 浏览:410
java对称加密 发布:2025-02-08 01:48:04 浏览:522
java报表框架 发布:2025-02-08 01:47:59 浏览:928
方舟手游怎么防止踢出服务器 发布:2025-02-08 01:42:44 浏览:690
c语言中函数的声明函数 发布:2025-02-08 01:41:08 浏览:70
编译termux 发布:2025-02-08 01:39:42 浏览:650
王者荣耀安卓哪里看ios国服榜 发布:2025-02-08 01:25:54 浏览:630
解压带教程 发布:2025-02-08 01:16:33 浏览:760