关于C的一些练习和知识
时间:2010-08-26 来源:z88591606
|
2010-08-24
今日学习内容:
-
gcc file.c -Wall 可以显示所有可能的警告。
-
strcpy函数的实现需要考虑三种情况char* strcpy(char * dist,const char * src)(1)dist 是否为空,用if(!dist)来判断;(2)dist所指的空间可能有限;(3)dist所指空间有可能指向src所指空间。
-
strstr(),strchr(),strcmp(),strlen(),reverse()的库函数实现。
-
当某个while 逻辑中的判断条件过于复杂可以选择不在while后的()中判断,而是通过在while循环中用if判断 改变相应的值,而后用return 语句或者break语句退出。
-
在一些逻辑比较复杂的业务中,可以选择将简单的部分划归到某几个函数。使用函数组合来解决一个复杂问题是 编程中一个重要思想。
-
在测试的过程中当某些内容需要频繁注释和取消注释时可以 使用#if 0 #endif 这样的预编译语句 修改0 或1 来进行调试。
-
好的编程风格中 (1)要在关键字和括号之间加空格,要在运算符和操作数之间加上空格。(2)在书写函数参数的时候,除第一个参数外其他参数前要有空格。
-
mark: 字符串指针++是第二个字符以后的字符串。已经赋值了的字符串不可以再改变其值。
今日问题:
1.当我试图为已经赋值的字符串改变值的时候不能赋值,可以使用另外一个字符串指针赋值后加‘\0’。
2010-08-25
今日内容:
-
负数转化为bool型时为真。vncviewer +IP 可以对指定IP开启远程桌面。
-
接受字符的函数scanf(“%d \n\t”)默认认为空格,制表符,换行为输入的两个变量的分割。所以输入以后要有字符再次读入 程序才会继续执行。
-
scanf在接受单个字符的时候,是处在某个scanf后面 则其接受到的是一个换行符。
-
我想声明两个字符串指针,第一个src用来存放要改变的字符串,第二个dist存放改变后的字符串,但是发现在并不能直接为dist赋值,可是发现前一天老师写的实现的一个strcpy()函数中就实现了从src往dist写字符。郁闷半天,还是经过老师指点,发现原来两个之间还是有不同的,在调用strcpy()的时候dist 所指的区域是一个字符数组,而不是字符串指针,而两者是有本质区别的。字符数组存放在堆栈中,其中的内容可以改变,但是如果使用字符串指针的话,必须初始化,而初始化以后,字符串指针所指的内容就存放在了只读数据段无法改变了。所以如果想控制字符串中的内容的时候必须使用字符数组,然后用一个字符指针指向这个数组然后进行遍历。(注意,不可用字符数组的地址遍历。如:char a[10]; a++;)。两个文件string.c 和9testup.c 在开始的tar 包里面。