
【c学习心得】
zwb8848happy
酷得惊动了党
展开
-
c语言判断文件的存在性
使用函数access,头文件是io.h,原型: int access(const char *filename, int amode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性: 06 检查读写权限 04 检查读权限 02 检查写权限原创 2012-01-06 22:15:08 · 1843 阅读 · 0 评论 -
c/c++的编程规范
一个程序员的编码水平如何,从他写的代码的风格,布局就可以看出来。所以良好的编码风格是非常重要的。清晰易读的代码,才是高质量的代码。下面是我从网上找到的一个关于编码风格的帖子。对于编程的初学者比较有用,高手就不必浏览了。一.每日编写如此之多的代码,很多同学现在的想法是,我要实现功能,实现了功能以后,万事大吉。其实在实际工作当中不是这样的。在工作当中,因为各种原原创 2012-03-30 13:56:01 · 579 阅读 · 0 评论 -
c语言extern
1、基本解释extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。2、问题:extern 变量在一个源文件里定义了一个数组:char a[6];在另外一个文件里用下列语句进行了声明:extern char *a;请问,这样可原创 2012-04-02 14:32:20 · 890 阅读 · 0 评论 -
fgets()和gets()函数的区别
在编程中发现gets和fgets一些区别总结一下:1、fgets比gets安全!为了安全,gets少用,因为其没有指定输入字符的大小,限制输入缓冲区得大小,如果输入的字符大于定义的数组长度,会发生内存越界,堆栈溢出。后果非常严重! fgets会指定大小,如果超出数组大小,会自动根据定义数组的长度截断。2、用strlen检测两者的输入的字符串长度,结果原创 2012-01-12 20:54:07 · 11605 阅读 · 2 评论 -
内存泄露
1. 什么是内存泄露(memory leak)? 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 A memory leak is a particular type of unintentional memory consump转载 2012-04-09 20:31:53 · 862 阅读 · 0 评论 -
c头文件和函数调用
之前写了个小程序。包含了头文件Node.h程序如下:Node.h中是:#includevoid Dis(){ int year; printf("Please input a year!\n"); scanf("%d",&year); Year(year);}void Year(int year){ pri原创 2011-12-29 21:11:27 · 9051 阅读 · 0 评论 -
函数指针详解
函数名与函数指针一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return转载 2012-05-06 11:32:47 · 396 阅读 · 0 评论 -
c语言获取文件长度
fseek(fp, 0L,SEEK_END); len =ftell(fp); 首先将文件的当前位置移到文件的末尾,然后调用函数ftell()获得当前位置相对于文件首的位移,该位移值等于文件所含字节数。原创 2012-10-13 09:47:37 · 1187 阅读 · 0 评论 -
按某字符串分割给定字符串
函数: strtok ( )语法: #include char * strtok (char * str1 , const char * str2);功能: 函数返回字符串str1中紧接“标记”的部分的指针, 字符串str2是作为标记的分隔符。 如果分隔标记没有找到,函数返回NULL。 为了将字符串转换成标记,第一次调用原创 2014-02-25 20:39:15 · 694 阅读 · 0 评论 -
C语言指针数组和数组指针
一、指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。下面到底哪个是数组指针,哪个是指针数转载 2014-02-25 20:52:35 · 673 阅读 · 0 评论 -
输入不定个数个字符串(动态操作)
要求:输入多个字符串,个数不定,最后以#字符串结束代码:#include#include#include#define N 255int main(){ char **str, temp[N]; int count = 1; int i; str = (char**)malloc(sizeof(char*) * count); while(gets(原创 2014-03-12 18:13:22 · 3346 阅读 · 0 评论 -
结构体类型数据的字节长度
提问:typedef struct{ int i; char name; double score;}student;int main(){ printf("学生结构体所占的字节数是 %d \n",sizeof(student)); return 0;}我想问一下,答案不应该是13吗?运行结果竟然是16,而且我把char name去掉了结果还是16。doubl原创 2012-03-10 21:50:28 · 852 阅读 · 0 评论 -
c语言中堆栈认识汇总
1.堆是是不连续的内存区域,栈是是一块连续的内存的区域(有待考证)2.为什么c语言在执行工作时程序将使用一个运行时堆栈在中国一些老师或一些低劣质量的书,喜欢把栈叫堆栈。其实堆,栈是栈。c语言在执行工作时程序将使用一个运行时堆栈,其实C语言是基于过程的语言,又叫基于函数的语言。而函数的调用过程用栈又非常的合适。所以,伴随程序的运行,函数的调用都默认给一个栈,基本上是一个线程就有一原创 2012-03-10 22:23:40 · 920 阅读 · 0 评论 -
c越界问题
问题:下面程序当我输入9999999999(共10个),程序输出1410065407#include int main(){ int n; while (scanf("%d",&n)!=EOF) { printf("the result is : %d\n\n",n); } return 0;}请问大家,如果溢出,原创 2012-03-10 22:04:13 · 1239 阅读 · 0 评论 -
memset函数使用详解
memset语法:#include void *memset( void *buffer, int ch, size_t count ); 功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如: memset( the_array, '\0', sizeof(t原创 2012-01-06 19:31:09 · 609 阅读 · 0 评论 -
文件操作EOF的问题
大家在使用C++写操作文件的程序时,一定使用过eof()这个函数,用它来判别文件结束,但有不少也用来判别文件是否为空的.但是,这样操作的结果不是我们所想的.看下面程序:#include string>using namespace std;int main(){ char c = 'c'; ifstream FILE("test.txt");转载 2012-01-09 22:10:56 · 616 阅读 · 0 评论 -
辨析getchar()和getch()
getchar有一个int型的返回值,当程序调用getchar时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符。getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会原创 2012-01-11 18:24:55 · 823 阅读 · 0 评论 -
c语言获取系统时间
#include #include void main() { time_t t; struct tm *tp; t=time(NULL); tp=localtime(&t); printf( "%d/%d/%d\n ",tp-> tm_mon+1,tp-> tm_mday,tp-> tm_year+1900);原创 2012-01-30 16:49:49 · 793 阅读 · 0 评论 -
c语言改变字体颜色
VC中要调用windows API来改变字体颜色。下面举个例子:#include #include int main(void) { printf("Hello\n");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);printf("Hello\原创 2012-02-22 21:04:36 · 10967 阅读 · 1 评论 -
c语言VC中console下移动光标位置
#include #include #include void gotoxy(int x,int y){COORD C;C.X = x;C.Y = y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C);}转载 2012-02-22 18:47:33 · 3360 阅读 · 2 评论 -
c语言清屏函数
在Turbo C中,可以调用conio.h头文件中的clrscr()函数来清屏。但是VC中,并没有这个函数。所以在VC中,可以这样做:#include void main(){system("cls");}原创 2012-02-22 20:05:56 · 23005 阅读 · 1 评论 -
二级指针与二级数组汇总
一个函数形如:void f(float **p){/* 想要在函数体中按二维数组的方式访问*/ p[1][1] = 0;//c++用vc编译ok,运行出错(非法访问)}float **p; //其实这里的p并不是一个二位数组的指针,只不过是一个指向指针的指针像你这样访问肯定是会出问题的。例如:float a[2][2]={0,1转载 2012-03-24 10:59:36 · 807 阅读 · 0 评论 -
指针这东西
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(原创 2012-03-24 11:06:30 · 543 阅读 · 0 评论 -
计算c程序执行的时间
C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下: clock_t clock( void ); 这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用原创 2012-03-10 19:48:00 · 491 阅读 · 0 评论