- 博客(34)
- 资源 (4)
- 收藏
- 关注
原创 C Primer Plus(5版)第8章编程题1_文件I/O实现2
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友”之前在 C Primer Plus(5版)第8章编程题1_重定向实现 - 知乎专栏 和 C Primer Plus(5版)第8章编程题1_文件I/O实现1 - 知乎专栏 这两篇文章中,如何实现统计一个文件中的字符个数,我使用了重定向技术和文件I/O函数来...
2019-02-27 21:30:00 240
原创 C Primer Plus(5版)第8章编程题1_文件I/O实现1
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友”之前在 C Primer Plus(5版)第8章编程题1_重定向实现 - 知乎专栏 这篇文章中,我给出了C Primer Plus(5版)第8章编程题第一道题的解答,我使用了重定向技术来统计了一个文本文件中的字符数。重定向技术简单,直接调用了系统的能力,...
2019-02-27 21:19:00 175
原创 C Primer Plus(5版)第8章编程题1_重定向实现
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友”一、题目描述本题是第8章编程题的第一道题,题目如下:image二、题目及思路分析从题述来看,有如下几个关键点:有这么一个文本文件读入文件中的文本统计文件中字符数判断文件的结尾以上4点都做到了,此题解完。那么,这4步的每一...
2019-02-27 21:17:00 286
原创 C Primer Plus(5版)第8章习题讲解(三)
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo或者扫描我的头像,验证时请注明是“知友”第8章的复习题还剩下6、7、8三题没有讲解了。本文讲下第6、8题,第7题先不讲了。1. 第6题image(a) 例子:当输入完题中要求的字符串,并且按下回车后,此时缓冲区中的数据是“If you quit,I will.\n”,注意,...
2019-02-27 21:16:00 145
原创 C Primer Plus(5版)第8章复习题讲解
C Primer Plus 第五版的第8章着重讲解了字符的输入、输出以及对输入的确认。书后的复习题都是很不错的练手习题,考察输入函数、重定向等多种技术。昨晚完这些题,可以对书中第8章的知识有更深的认识。这些复习题共8道题,我截图如下:imageimage上述8道题,书后会有解答,我在我的专栏里 C语言编程答疑 - 知乎专栏 ...
2019-02-26 21:57:00 247
原创 C Primer Plus(5版)第8章习题讲解(一)
C Primer Plus 第五版的第8章的习题3是我觉得是一个很不错的练手习题,考察输入函数、重定向等多种技术,做完这道题,可以对C语言的标准I/O有更深的认识。题目是这样的:假设您有一个程序count,该程序对输入的字符数进行计数。用count程序设计一个命令行命令,对文件essay中的字符进行计数并将结果保存在名为essayct的文件中。这道题的...
2019-02-26 21:56:00 252
原创 C语言二维数组专题——理解二维数组名
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo最近在研究二维数组,发现如果单独理解数组名的Array的含义,还真不太好理解。比如现在有一个二维数组:int Array[2][2] = { {1, 2}, {3, 4} };这个二维数组里包含了两个一维数组,分别是{1,2},{3,4},这个好理解,但是对于Array和Array + 1...
2019-02-26 21:55:00 1167
原创 C语言二维数组专题——先搞晕你
小伙伴们,对C语言编程有疑问的,可以加微信交流:poo_poo二维数组C语言中的一个重要的概念,它的每一个数组元素是一个一维数组,看起来好复杂是不是?我写了一个程序,是关于二维数组的,我特意把复杂的地方都输出来,如下:#include <stdio.h>//编译器名: TDM-GCC 4.9.2 32-bit Release//运行平台...
2019-02-26 21:54:00 490
原创 C语言指针使用不当带来的内存不可读
前几天遇到一个C语言初学者提到的一个问题,代码我做了一些修改,如下:#include <stdio.h> #include <string.h>int main(void) { char str[10] = "I love C"; char *pStart = &str[0]; char ...
2019-02-26 21:53:00 419
原创 C语言指针专题——使用指针要注意这些
C语言中,指针的概念有点难懂,使用起来稍微不注意,也会遇到各种问题。在本文中,我列举出了几个使用指针不当的方式,希望朋友们在编程实践中也多多注意。一、野指针野指针这个东东是经常被人提及的,其危害也是大家有目共睹的。我很早之前写过一篇文章来说明野指针的,链接是:C程序中可怕的野指针 - 知乎专栏有兴趣的朋友可以看看,这里就不多废话了!二、越界访问...
2019-02-26 21:52:00 280
原创 C语言指针专题——指针怎么就很灵活?
本篇再来谈谈C语言中,为何有人会说指针很灵活?指针是精华?我来说说我对灵活性的理解。先举个例子。windows上有很多好玩的游戏,比如我大学时喜欢玩的三国争霸的游戏,游戏的内容就是给我一片空地,让我在空地上建造房屋,有了房屋就能生产农夫,有了农夫就能种地生产粮食,建造兵工厂,生产武器,农夫还能变成士兵等等。等到自己的实力壮大了,就能去攻击对方的城池。这...
2019-02-26 21:50:00 303
原创 C语言指针专题——为何要学习指针
欢迎转发本文!之前的文章与各位谈论了指针是什么,以及指针为何这那么难学。不少知友留言说看了我的文章对指针了解了不少,这给我继续创作提供了莫大的动力啊。指针其实就是一个纸老虎,你看着可怕,等你了解其本质后,你会对其不屑的。这一篇来聊聊为什么要用指针,或者说,在什么场景下必须要用指针,也就是给我们一个学习指针的理由,否则为何要去学指针,那不神经病嘛。本文列...
2019-02-26 21:49:00 205
原创 C语言指针专题——指针难学的4点原因
前一篇跟大家聊了聊指针的概念,可是就算了解了指针是什么,为什么依然感觉难学?我试着从几个点切入,聊聊指针难学之处。难点1. 讨厌的星号定义指针变量p时,都会加个号。在用到指针变量p时,也会加个号。比如以下代码:int main(){ int *p; p = malloc(sizeof(int)); *p = 1; ...
2019-02-26 21:48:00 350
原创 C语言指针专题——如何理解指针
指针,传说中是C语言中的一个难点,且是难点中的难点。本文在教材的基础上,再详细地谈谈“指针”这个东东,力争让大家能理解它。一、指针的概念关于指针的定义,很多教材一般给出“它是一个地址”,“存储的是变量的地址”,“指向了一个值”等等描述。这样描述其实也没错,但是就是不那么好理解。我觉得要理解指针,无需给出什么定义,只需讲透如下5个点,我认为基本就可以理解...
2019-02-26 21:46:00 179
原创 C语言指针专题——序
看到好多的C语言初学者学到指针时,都觉得指针怎么那么难啊!我也想起了我当时学习指针时遇到的困难,确实很难!到底是教程写的不好呢,还是老师教的不好呢?我觉得都有。网上搜索指针讲解的资料很多,我也看了不少,不能说这些资料讲的不对,他们讲的是对的,把指针是什么,怎么用也讲到了,可是还有好多人还是不理解。我想想自己是怎么学指针的,遇到困难时也是拿着纸笔画啊画,...
2019-02-26 21:45:00 120
原创 C语言中的函数与数学上的函数很类似
函数,是C语言编程中一个很重要的概念,重要到个人认为可以与指针并驾齐驱。好多教材、老师、学习资源都会专门挑出一章来讲函数。我今天也来说说函数,只不过我是从数学课上的函数来引申到C语言中的函数。先来说说数学课上老师讲的函数概念。我上初中那会儿开始接触数学的函数,最经典的就是二次方程式了,如下:f(x) = xx + 2x + 1好多人还记得这个方程式吧...
2019-02-26 21:42:00 683
原创 signed char类型取值范围计算
在C语言程序中,给定一个类型,如何计算这个类型变量的取值范围呢?比如有一个字符型变量定义如下:signed char c;这个字符变量c的取值范围是【-128,127】,是计算出来的呢?假设字符型变量占用一个字节,也就是8bit。由于是“signed”,也就是有符号的,也就是可以是正数,也可以是负数,那么8bit中的最高位就是表示符号位。符号位是“1...
2019-02-26 21:41:00 448
原创 C语言字符型数据的ASCII码值为何输出是负数?
有如下一段C语言程序:#include "stdio.h"int main(void){char a = 0xC8;printf ("字符a的ASCII码值的10进制是%d\n", a);return 0;}程序定义了一个字符‘a’,并且赋予了初始值“0xC8”,这是一个16进制的数。最后,通过printf函数输出字符a的值。程序不难,...
2019-02-26 21:40:00 3029
原创 这样子来理解C语言中指针的指针
友情提示:阅读本文前,请先参考我的之前的文章《从四个属性的角度来理解C语言的指针也许会更好理解》,若已阅读,请继续往下看。我从4个属性的角度来总结了C语言中的指针概念。对于C语言的一个指针,比如int *p,4个属性分别如下:C语言指针p=(指针自己的值,与星号结合名,有用数据的值,有用数据的类型);这4个属性用来理解C语言中单个指针可以,那么本篇再...
2019-02-26 21:39:00 151
原创 调用scanf函数的一个陷阱
我们在写C程序时,经常使用scanf函数,让用户输入数据,可是有时候会出现一些很奇怪的问题。例如,下面的程序是一个简单的四则运算:#include <stdio.h> int main() { char ope = '\0';//操作符+ - * / int para1 = 0, para2 = 0, result = ...
2019-02-26 20:28:00 608
原创 &&与||的短路运算
在谈&&和||两个运算符的短路运算之前,先看一段程序:#include <stdio.h>int main() { int para1 = 1, para2 = 2, para3 = 3, para4 = 4; int r1 = 1, r2 =1; (r1 = para2 < para1) ...
2019-02-26 20:27:00 1358
原创 printf函数的返回值
先看下面一段程序:#include <stdio.h>int main(){int i = 123;printf("%d\n",printf("%d",printf("%d",i)));return 0;}printf函数里面又嵌入了printf函数,你认为此段程序会打印出什么?本程序在VC 6.0上编译...
2019-02-26 20:26:00 2436
原创 从四个属性的角度来理解C语言的指针也许会更好理解
关于指针是什么,很多教材已经作出了定义,大多数都会定义为“存放变量内存地址的变量”。从这句话中我觉得除了让我知道这个定义有11个字以外,其他就没什么用了。我个人觉得要理解指针,不是光光说一下是变量的地址就万事大吉了,而是要从多个属性来解释指针,为此,我个人总结了一个所谓的多维属性法来理解指针。另外,为了能把指针说清楚,我认为关键不在于用苦涩的文字描述,而...
2019-02-26 20:25:00 100
原创 小心误用C语言的free()函数
朋友们对C语言malloc函数应该是比较熟悉了,此函数功能是分配一段内存地址,并且将内存地址给一个C程序的指针变量,最后记得再调用free函数释放这段内存地址就可以了,标准的流程对吧,好像没什么问题。但是按照此标准流程,下面的C语言程序却有个奇怪的现象:#include <stdio.h>#include <string.h>...
2019-02-26 20:23:00 667
原创 小心使用strcpy函数时越界
本文著作权声明:请务必阅读本人的个人介绍!strcpy()函数应该是我们用的比较常用的一个函数,基本功能是将一个字符串拷贝到我指定的内存空间。但是要复制的字符串长度超过这段内存空间的话,结果可能是未知的。比如以下的程序:#include <stdio.h> #include <string.h> int ma...
2019-02-19 20:48:00 352
原创 别混淆了sizeof(数组名)和sizeof(指针)
本文著作权声明:请务必阅读个人介绍部分!我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事。比如类似下面的代码片段:for(i = 0; i< length; i++){printf(“数组元素是%d”, 数组[i]);}用一个下标索引变量i来遍历整个数组,length是数组的长度。当然了,lengt...
2019-02-19 20:46:00 1563
原创 C语言的指针移动怎么理解
版权声明:本文为作者原创文章,转载时请注明文章来源,否则视为侵权,并按法律程序处理!刚学习C语言的朋友,对指针“移动”可能不太理解。举个例子,例如下述代码:int a = 1;那么大家都知道a + 1肯定就是2了。如果是指针呢?例如:int *p = 1;p + 1还是2吗?为了说明问题,请看以下代码:#include "stdio.h" ...
2019-02-18 20:04:00 1675
原创 Socket编程:listen()函数英文翻译
本篇翻译的listen()函数,我参考的国外网站是:listen朋友们可以自由转载我对英文的中文翻译,但是对于“作者注:”的描述,转载时请注明出处和作者,否则视为侵权。下面是翻译的正文,由于水平有限,有些翻译的不好,有些未能翻译出,恳请读者指出与见谅。NAMElisten - listen for socket connections and l...
2019-02-18 20:02:00 268
原创 Socket编程(C语言实现):bind()函数英文翻译
本篇翻译的bind()函数,我参考的国外网站是:bind朋友们可以自由转载我对英文的中文翻译,但是对于“作者注:”的描述,转载时请注明出处和作者,否则视为侵权。下面是翻译的正文,由于水平有限,有些翻译的不好,有些未能翻译出,恳请读者指出与见谅。NAMEbind - bind a name to a socketbind一个名字到一个套接字上。...
2019-02-18 20:01:00 528
原创 C语言指针学多了,你为什么会觉得晕?
版权声明:请一定到个人介绍中详细阅读!对于C语言中的指针概念,如果我告诉你,它是一个地址变量,你听了一头雾水,“地址?啥意思?”见你不理解,我说的详细点“指针变量跟其他变量一样,存储的是一个地址”。你想了想,“跟其他变量一样?其他变量存放的是数值,变量有地址....指针变量存放的是地址,地址里有个值.....”你又晕掉了!没办法,我找了专业教材,找到教材...
2019-02-18 19:58:00 187
原创 Socket编程(C语言实现):socket()函数英文翻译
最近开始研究使用Socket API来网络编程,想着把自己的感想、感悟写下来。我发现在编程之外还有不少概念性的东西要学习。我觉得应该有以下几点吧:1.得了解下计算机网络的基本概念,如OSI的7层模型,TCP/IP协议,地址端口等。TCP/IP协议相关的知识推荐看国外的教材;2.了解计算机网络中两个结点之间通信的基本过程,以及IP地址、端口的基本概念。比...
2019-02-18 19:56:00 130
原创 误用gets()函数的一个问题
版权声明:请至个人介绍中查阅!C语言面试经常会考如下一道题,哪里有错误:#include <stdio.h> int main() { char string[100] = {'\0'}; gets(string); printf("输入的字符串是:%s \n", string); re...
2019-02-18 19:54:00 886
原创 printf打印参数的顺序问题
版权声明:请至个人介绍中查阅!自从本文发表以来,作者看到好多评论说pritnf函数的参数打印顺序是未定义行为,讨论没有任何意义。作者非常感激知友们的意见,遂决定与知友站在一起声讨此文,来,一起大声喊“作者啊,你这个大白痴痴痴~痴~~~(此处回音袅袅)”。作者决定继续留下此文,继续接收知友们的声讨,日后创作其他内容时要时时刻刻想起此文的教训,变骂声为动力...
2019-02-18 19:52:00 906
原创 break使用不当引发的一个“血案”
我是C语言编程答疑者,喜欢用通俗形象的讲解来剖析C语言编程中的抽象点与难点,欢迎关注我,方便你在学习C语言过程中遇到疑难杂症时与我交流_!小伙伴们对本回答有疑点或者兴趣点可以留言讨论哦!要复制粘贴本文文字者务必查看个人简介中有关版权说明!最近在网上冲浪,读到一个新闻,说上世纪90年代一天,AT&T电话网络的一交换机挂了,导致数万人长时间不能打长途...
2019-02-17 21:50:00 247
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人