c语言好学吗编程

编程中国 >> 技术教程 >> 开发语言 >> C语言 >> C语言教程
您现在的位置:&&>>&&>>&&>>&&>>&
1414752791501491368430970342563338963315375231714218830214701
C语言教程文章列表
共 108 篇文章&&首页 | 上一页 | 1
| &30篇文章/页&&转到第页
| && | && | && | && | &&|Windows下C语言的Socket编程例子(TCP和UDP) - 初日 - 博客园
随笔 - 34, 文章 - 0, 评论 - 4, 引用 - 0
一。 &&TCP&
server端:
1 #include "stdafx.h"
2 #include &stdio.h&
3 #include &winsock2.h&
5 #pragma comment(lib,"ws2_32.lib")
7 int main(int argc, char* argv[])
//初始化WSA
WORD sockVersion = MAKEWORD(2,2);
WSADATA wsaD
if(WSAStartup(sockVersion, &wsaData)!=0)
//创建套接字
SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(slisten == INVALID_SOCKET)
printf("socket error !");
//绑定IP和端口
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
printf("bind error !");
//开始监听
if(listen(slisten, 5) == SOCKET_ERROR)
printf("listen error !");
//循环接收数据
sockaddr_in remoteA
int nAddrlen = sizeof(remoteAddr);
char revData[255];
while (true)
printf("等待连接...\n");
sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);
if(sClient == INVALID_SOCKET)
printf("accept error !");
printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
//接收数据
int ret = recv(sClient, revData, 255, 0);
if(ret & 0)
revData[ret] = 0x00;
printf(revData);
//发送数据
char * sendData = "你好,TCP客户端!\n";
send(sClient, sendData, strlen(sendData), 0);
closesocket(sClient);
closesocket(slisten);
WSACleanup();
client端:
1 #include "stdafx.h"
2 #include &WINSOCK2.H&
3 #include &STDIO.H&
comment(lib,"ws2_32.lib")
8 int main(int argc, char* argv[])
WORD sockVersion = MAKEWORD(2,2);
if(WSAStartup(sockVersion, &data) != 0)
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sclient == INVALID_SOCKET)
printf("invalid socket !");
sockaddr_in serA
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
printf("connect error !");
closesocket(sclient);
char * sendData = "你好,TCP服务端,我是客户端!\n";
send(sclient, sendData, strlen(sendData), 0);
char recData[255];
int ret = recv(sclient, recData, 255, 0);
if(ret & 0)
recData[ret] = 0x00;
printf(recData);
closesocket(sclient);
WSACleanup();
1 #include "stdafx.h"
2 #include &stdio.h&
3 #include &winsock2.h&
5 #pragma comment(lib, "ws2_32.lib")
7 int main(int argc, char* argv[])
WSADATA wsaD
WORD sockVersion = MAKEWORD(2,2);
if(WSAStartup(sockVersion, &wsaData) != 0)
SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(serSocket == INVALID_SOCKET)
printf("socket error !");
sockaddr_in serA
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = INADDR_ANY;
if(bind(serSocket, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
printf("bind error !");
closesocket(serSocket);
sockaddr_in remoteA
int nAddrLen = sizeof(remoteAddr);
while (true)
char recvData[255];
int ret = recvfrom(serSocket, recvData, 255, 0, (sockaddr *)&remoteAddr, &nAddrLen);
if (ret & 0)
recvData[ret] = 0x00;
printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
printf(recvData);
char * sendData = "一个来自服务端的UDP数据包\n";
sendto(serSocket, sendData, strlen(sendData), 0, (sockaddr *)&remoteAddr, nAddrLen);
closesocket(serSocket);
WSACleanup();
1 #include "stdafx.h"
2 #include &stdio.h&
3 #include &winsock2.h&
5 #pragma comment(lib, "ws2_32.lib")
7 int main(int argc, char* argv[])
WORD socketVersion = MAKEWORD(2,2);
WSADATA wsaD
if(WSAStartup(socketVersion, &wsaData) != 0)
SOCKET sclient = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int len = sizeof(sin);
char * sendData = "来自客户端的数据包.\n";
sendto(sclient, sendData, strlen(sendData), 0, (sockaddr *)&sin, len);
char recvData[255];
int ret = recvfrom(sclient, recvData, 255, 0, (sockaddr *)&sin, &len);
if(ret & 0)
recvData[ret] = 0x00;
printf(recvData);
closesocket(sclient);
WSACleanup();
本文来至:谭浩强C语言程序设计教程.pdf - 下载频道
- CSDN.NET
&&&&谭浩强C语言程序设计教程.pdf
谭浩强C语言程序设计教程.pdf
《C语言程序设计教程》作者:谭浩强,出版社:高等教育出版社,ISBN:,pdf 格式,大小 4.9MB。
内容简介:
C语言是一种结构化的计算机语言,它既具有高级语言的特点,又具有低级语言的功能。///本书是学习C语言程序设计的基础教程,采取循序渐进的内容安排,通俗易懂的讲解方法,并辅以大量的便于说明问题的例题,使得凡学过一门高级语言的读者都能通过学习本书掌握C语言的基本内容,并应用它编写程序。///本书主要内容包括:C语言的基本概念各种数据类型的使用技巧、C语言模块化程序设计的方法、文件的基本操作和使用规则。而且,考虑到C语言的一个重要用途是直接操作硬件,因而,特地安排综合应用举例一章,详细地介绍了这方面的
1 C语言概述 2
1.1 C语言的发展过程 2
1.2 当代最优秀的程序设计语言 2
1.3 C语言版本 2
1.4 C语言的特点 3
1.5 面向对象的程序设计语言 3
1.6 C和C++ 3
1.7 简单的C程序介绍 4
1.8 输入和输出函数 5
1.9 C源程序的结构特点 6
1.10 书写程序时应遵循的规则 6
1.11 C语言的字符集 6
1.12 C语言词汇 7
1.13 Turbo C 2.0集成开发环境的使用 8
1.13.1 Turbo C 2.0简介和启动 8
1.13.2 Turbo C 2.0集成开发环境 8
1.13.3 File菜单 9
1.13.4 Edit菜单 10
1.13.5 Run菜单 11
1.13.6 Compile菜单 12
1.13.7 Project菜单 13
1.13.8 Options菜单 14
1.13.9 Debug菜单 18
1.13.10 Break/watch菜单 19
1.13.11 Turbo C 2.0的配置文件 20
2 程序的灵魂—算法 1
2.1 算法的概念 1
2.2 简单算法举例 1
2.3 算法的特性 4
2.4 怎样表示一个算法 4
2.4.1 用自然语言表示算法 4
2.4.2 用流程图表示算法 4
2.4.3 三种基本结构和改进的流程图 8
2.4.4 用N-S流程图表示算法 9
2.4.5 用伪代码表示算法 10
2.4.6 用计算机语言表示算法 11
2.5 结构化程序设计方法 11
3 数据类型、运算符与表达式 1
3.1 C语言的数据类型 1
3.2 常量与变量 3
3.2.1 常量和符号常量 3
3.2.2 变量 3
3.3 整型数据 4
3.3.1 整型常量的表示方法 4
3.3.2 整型变量 5
3.4 实型数据 7
3.4.1 实型常量的表示方法 7
3.4.2 实型变量 8
3.4.3 实型常数的类型 9
3.5 字符型数据 9
3.5.1 字符常量 9
3.5.2 转义字符 9
3.5.3 字符变量 10
3.5.4 字符数据在内存中的存储形式及使用方法 10
3.5.5 字符串常量 11
3.5.6 符号常量 12
3.6 变量赋初值 12
3.7 各类数值型数据之间的混合运算 13
3.8 算术运算符和算术表达式 14
3.8.1 C运算符简介 14
3.8.2 算术运算符和算术表达式 15
3.9 赋值运算符和赋值表达式 17
3.10 逗号运算符和逗号表达式 18
3.11 小结 19
3.11.1 C的数据类型 19
3.11.2 基本类型的分类及特点 19
3.11.3 常量后缀 19
3.11.4 常量类型 19
3.11.5 数据类型转换 19
3.11.6 运算符优先级和结合性 20
3.11.7 表达式 20
4 最简单的C程序设计—顺序程序设计 1
4.1 C语句概述 1
4.2 赋值语句 3
4.3 数据输入输出的概念及在C语言中的实现 4
4.4 字符数据的输入输出 4
4.4.1 putchar 函数(字符输出函数) 4
4.4.2 getchar函数(键盘输入函数) 5
4.5 格式输入与输出 5
4.5.1 printf函数(格式输出函数) 5
4.5.2 scanf函数(格式输入函数) 8
4.6 顺序结构程序设计举例 12
5 分支结构程序 1
5.1 关系运算符和表达式 1
5.1.1 关系运算符及其优先次序 1
5.1.2 关系表达式 1
5.2 逻辑运算符和表达式 2
5.2.1 逻辑运算符极其优先次序 2
5.2.2 逻辑运算的值 3
5.2.3 逻辑表达式 3
5.3 if语句 4
5.3.1 if语句的三种形式 4
5.3.2 if语句的嵌套 7
5.3.3 条件运算符和条件表达式 9
5.4 switch语句 10
5.5 程序举例 11
6 循环控制 1
6.1 概述 1
6.2 goto语句以及用goto语句构成循环 1
6.3 while语句 2
6.4 do-while语句 4
6.5 for语句 6
6.6 循环的嵌套 9
6.7 几种循环的比较 9
6.8 break和continue语句 9
6.8.1 break语句 9
6.8.2 continue 语句 10
6.9 程序举例 11
7.1 一维数组的定义和引用 1
7.1.1 一维数组的定义方式 1
7.1.2 一维数组元素的引用 2
7.1.3 一维数组的初始化 4
7.1.4 一维数组程序举例 4
7.2 二维数组的定义和引用 6
7.2.1 二维数组的定义 6
7.2.2 二维数组元素的引用 6
7.2.3 二维数组的初始化 7
7.2.4 二维数组程序举例 9
7.3 字符数组 9
7.3.1 字符数组的定义 9
7.3.2 字符数组的初始化 9
7.3.3 字符数组的引用 10
7.3.4 字符串和字符串结束标志 10
7.3.5 字符数组的输入输出 10
7.3.6 字符串处理函数 12
7.4 程序举例 14
7.5 本章小结 17
8.1 概述 1
8.2 函数定义的一般形式 3
8.3 函数的参数和函数的值 4
8.3.1 形式参数和实际参数 4
8.3.2 函数的返回值 5
8.4 函数的调用 6
8.4.1 函数调用的一般形式 6
8.4.2 函数调用的方式 6
8.4.3 被调用函数的声明和函数原型 7
8.5 函数的嵌套调用 8
8.6 函数的递归调用 10
8.7 数组作为函数参数 12
8.8 局部变量和全局变量 17
8.8.1 局部变量 17
8.8.2 全局变量 19
8.9 变量的存储类别 20
8.9.1 动态存储方式与静态动态存储方式 20
8.9.2 auto变量 21
8.9.3 用static声明局部变量 21
8.9.4 register变量 22
8.9.5 用extern声明外部变量 23
9 预处理命令 1
9.1 概述 1
9.2 宏定义 1
9.2.1 无参宏定义 1
9.2.2 带参宏定义 4
9.3 文件包含 8
9.4 条件编译 9
9.5 本章小结 11
10.1 地址指针的基本概念 1
10.2 变量的指针和指向变量的指针变量 2
10.2.1 定义一个指针变量 3
10.2.2 指针变量的引用 3
10.2.3 指针变量作为函数参数 7
10.2.4 指针变量几个问题的进一步说明 10
10.3 数组指针和指向数组的指针变量 13
10.3.1 指向数组元素的指针 13
10.3.2 通过指针引用数组元素 14
10.3.3 数组名作函数参数 16
10.3.4 指向多维数组的指针和指针变量 22
10.4 字符串的指针指向字符串的针指变量 25
10.4.1 字符串的表示形式 25
10.4.2 使用字符串指针变量与字符数组的区别 28
10.5 函数指针变量 29
10.6 指针型函数 30
10.7 指针数组和指向指针的指针 31
10.7.1 指针数组的概念 31
10.7.2 指向指针的指针 34
10.7.3 main函数的参数 36
10.8 有关指针的数据类型和指针运算的小结 37
10.8.1 有关指针的数据类型的小结 37
10.8.2 指针运算的小结 37
10.8.3 void指针类型 38
11 结构体与共用体 1
11.1 定义一个结构的一般形式 1
11.2 结构类型变量的说明 2
11.3 结构变量成员的表示方法 4
11.4 结构变量的赋值 4
11.5 结构变量的初始化 5
11.6 结构数组的定义 5
11.7 结构指针变量的说明和使用 7
11.7.1 指向结构变量的指针 7
11.7.2 指向结构数组的指针 9
11.7.3 结构指针变量作函数参数 10
11.8 动态存储分配 11
11.9 链表的概念 12
11.10 枚举类型 14
11.10.1 枚举类型的定义和枚举变量的说明 14
11.10.2 枚举类型变量的赋值和使用 15
11.11 类型定义符typedef 16
12 位运算 1
12.1 位运算符C语言提供了六种位运算符: 1
12.1.1 按位与运算 1
12.1.2 按位或运算 2
12.1.3 按位异或运算 2
12.1.4 求反运算 3
12.1.5 左移运算 3
12.1.6 右移运算 3
12.2 位域(位段) 4
12.3 本章小结 6
13.1 C文件概述 1
13.2 文件指针 2
13.3 文件的打开与关闭 2
13.3.1 文件的打开(fopen函数) 2
13.3.2 文件关闭函数(fclose函数) 4
13.4 文件的读写 4
13.4.1 字符读写函数fgetc和fputc 4
13.4.2 字符串读写函数fgets和fputs 8
13.4.3 数据块读写函数fread和fwtrite 9
13.4.4 格式化读写函数fscanf和fprintf 11
13.5 文件的随机读写 12
13.5.1 文件定位 12
13.5.2 文件的随机读写 13
13.6 文件检测函数 14
13.6.1 文件结束检测函数feof函数 14
13.6.2 读写文件出错检测函数 14
13.6.3 文件出错标志和文件结束标志置0函数 14
13.7 C库文件 14
13.8 本章小结 15
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行 |  |  |  |  |  |  |  |  |  |  |   | 
&&&&& Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。特别是近年来Linux在服务器和嵌入式领域的发展,Linux的江湖地位愈加稳定,它开源、它包含TCP/IP协议栈、它易集成GUI。鉴于Linux操作系统在服务器和嵌入式系统领域愈来愈广泛的应用,社会上越来越需要基于Linux操作系统进行编程的开发人员。本期专题将向读者朋友打开Linux开发的大门
专题策划:天极Yesky开发频道 内容提供:方舟 五月[010-]
& Sppence Murray 是 Linux 开发高手之一,同时长期以来他一直是 UNIX 的坚定支持者。本文介绍的是 Murray 和他在 Codemonks Consulting 的同事在日常的 Linux 开发以及应用服务工作中用到的基本技术: shell 脚本,相信 Linux 的开发人员都会受益于这项有用而且通用的技术。 []
& 学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。 []
& Redhat linux上面没有提供Anjuta软件包,上面提供了一个Glade应用程序界面设计工具。Linux上面使用Anjuta和Glade以及Glademm软件包可以搭建一个linux下面进行C/C++软件开发的IDE环境,可以进行GTK+/Gnome的应用程序开发。 []
  Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源、它包含TCP/IP协议栈、它易集成GUI。鉴于Linux操作系统在服务器和嵌入式系统领域愈来愈广泛的应用,社会上越来越需要基于Linux操作系统进行编程的开发人员。
&&&目前,市面上的Linux设备驱动程序参考书籍非常稀缺,少有的经典是由Linux社区的三位领导者Jonathan Corbet、Alessandro Rubini、Greg Kroah-Hartman编写的《Linux Device Drivers》。该书将Linux设备驱动编写技术进行了较系统的展现,但是该书所列举实例的背景过于复杂,使得读者需要将过多的精力投放于对例子背景的理解上,很难完全集中精力于Linux驱动程序本身。 []
&&&线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 []
& 在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了。 []
  随着Linux的蓬勃发展,关注和投身Linux开发的开发人员越来越多,但目前市面上介绍Linux开发的资料却非常稀少,很多开发人员感到入行无门,因此为了满足广大Linux爱好者的要求,我特意组织了这个教程,希望能给大家一些帮助。
培训与认证
优秀专题推荐
Copyright (C) 1999-, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-渝ICP证B2-号C语言程序设计
C语言程序设计――课程材料、参考材料和讨论
(年修订。在线材料,包括可以下载的PDF文件)。
这里是《从问题到程序》(老版本)中的,可以直接使用。
如果想找可用的C系统,可以从这里下载。
还可下载。
C语言基本特征
C语言程序设计的一些基本问题(建设中)
课程教科书 《从问题到程序――程序设计与C语言引论》,裘宗燕,北京大学出版社,1999。本书的,从这里可以下载。这里是(可以下载PDF文件)。
《C程序设计设计语言(第二版)》(The C Programming Language),Brian W.
Kernighan & Dennis M. Rirchie,清华大学出版社,大学计算机教育丛书(影印版,英文),1996。本书为在全世界影响最大的C语言参考书,作者之一(D.
M. Richie)为C语言的开发者。中文正式译本已经由机械工业出版社出版(2001年)。
《程序设计实践》,(The Practice Of Programming, Brian W. Kernighan &
Bob Pike 1999)。中文版由我翻译,机械工业出版社出版,2000。这本书讨论了程序设计的许多重要的实践性问题,值得每个学过一个程序设计语言,有些程序设计经验,热爱或梦想在计算机领域工作的人阅读参考。在这里可以看到和。还有我为该书中文版写的。
C语言与程序设计FAQ(Frequently
Asked Question)
[来自新闻组comp.lang.c,为英文。问题列表已译为中文]。
使用:浏览分类列表,按编号到对应节中找回答。如遇读起来不好理解的项目,可以。
(已经全部翻译为中文)。
分节内容:
其他相关材料
2)C语言设计者Dennis.M.Retchie关于C语言历史的文章:The Development of
C Language(英),,也可以下载(204K)。本文中讨论了C语言起因、设计和后来发展演化的情况。该文写于1993年,发表在“ACM第二次程序设计语言历史”会议(HOPL
3)Andrew Koenig关于C语言中陷阱和缺陷的文章:The Traps and Pitfalls Of C(英文)。它可以帮助你了解使用C语言时容易出现的一些问题。,也可以下载(56K)或者(80K)。该作者后来扩展了这篇文章,以同样名字写了一本书(国内译本《C陷阱与缺陷》,人民邮电出版社)。
4)如果想了解C语言的发展,这里有C语言新标准化的。ZIP压缩的PDF文件,1193K。你需要DOWNLOAD到自己机器上,解压缩后用阅览程序看。这是语言参考手册的草案,长约600页,英文。除非你想深入了解今天人们希望C语言往什么方向发展,否则不必去看它。
新的C语言标准已于1999年通过,一般称为C99。有关情况请参考《C语言参考手册(第五版)》,人民邮电出版社影印。
5)如果你想了解C++语言,或者是在学习使用C++中遇到了一些问题,可以参考这里的材料。这里是网络新闻组comp.lang.c++的(英文)。
有关网络资源和链接
。从那里可以找到一些链接。
============
国外有些重要C语言资源站点,我将收集和更新。下面是国外的一些有关站点:
(位于瑞典的一个C程序设计资料站点)
(上面页的姊妹页)
(位于芬兰的一个C/C++资料页)
本页及相关页由裘宗燕建立和维护,保留所有权利。
这里的材料可自由用于个人学习或普通教学活动。其他用途应事先得到作者的书面认可。}

我要回帖

更多关于 c语言编程实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信