C,C++语言易忽略的知识点学习(一)

2013.4.15

        最初学习C语言基本都是参照别人的代码,或者直接码一遍别人的字,然后在计算机上运行,经常会遇到一些错误,具体没有统计过,总之,大部分是链接错误、定义错误、或者是VC++编译器不兼容的一些问题,没遇到这样的问题,我总是不知所措,只好又在网上找其他的相似的代码。去年暑假在实验室学习了二十天的编程,学会了调试,就慢慢开始自己寻找错误在哪。上学期自己移植了一些Linux上的代码,逐渐对错误的调试熟练起来。

但是,我几乎没有自己独立的编写过代码,总是在别人的基础上做点小小的工作,这导致了我一到自己动手写代码,总是这也不清楚,那也不确定,所谓基础不牢,地动山摇。所以,从上个月开始,我重视了对C语言基础的学习。对于C语言学习不能作为一个独立的分支,而要贯穿到我编写算法的过程慢慢积累,久而久之,我先对C库函数非常熟悉,然后能够建立自己的库。

这篇文章主要记录我在编写自己的代码中,遇到的问题。

1、求整形数组的长度。

我写的第一个函数是insertion_sort(插入排序),其中要用到数组的长度。求字符串数组有专门的函数strlen,但是整形数组并没有相应的函数。

宏定义法:

#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));}

错误的方法:

int Listlength(int *L)

{

int count=0;

int *p=L;

while (p!=NULL)

{

count++;

p++;

}

return count;

}

因为当p指向数组的最后一个元素的下一个值时(即发生越界)还是会指向一个值,不会是NULL也不是’\0’,所以返回值count不会是数组的长度。

2、从文件中读取一个整型数组。

例如:将myData.txt

20 2 4 9 100 78 22 58 20 44 78

读入到arr[]中。

首先,定义arr[]的长度(必须大于txt文件中数组的长度),假设为:

#define SIZE 100

然后,

  count = 0;

pFile = fopen("myData.txt", "r");

while(!feof(pFile))

{

fscanf(pFile, "%d", arr+count);

count++;

}

length = count;

还可以计算出文件中数据的长度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值