c语言的一些自己容易忽略的要点;
**1:**scnaf 和gets 的比较 : scnaf不可以读取空格 gets可以读取空格;
2: 定义一个 char类型 如 char a ; scnaf("%c",&a);会读取回车 如果前者需要回车操作是应改为 scnaf("\n%c",&a);
3 如果定义了 字符串 a[20] 无论输入多少都是 20个字节 定义a[n] 则字节随输入而改变;
4 文件读取时 为了不读取最后的乱码 应
while(1)
{
o=(AAA)malloc(sizeof(aaa));
fscanf(fl,"%d %s %d %d",&o->id,o->name,&o->num,&o->prise);
if(feof(fl))
break;
o->next=NULL;
l->next=o;
l=o;
}
5 字符串后面有 \0;
6常用的排序方法 (循环一般比定义数组里面的数子-1)
1:冒泡排序法
#include<stdio.h>
void main()
{
int a[10];
int i,j,t;
printf(“input 10 numbers:\n”);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++) /进行9次循环 实现9趟比较/
for(i=0;i<9-j;i++) /在每一趟中进行9-j次比较/
if(a[i]>a[i+1]) /相邻两个数比较,想降序只要改成a[i]<a[i+1]/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
2:选择排序法:
void select_sort(int a[],int n) //传入数组的要排序的元素个数
{int i,j,min,t;
for(i=0;i<n-1;i++)
{ min=i; //min:当前最小值下标
for(j=i+1;j<n;j++) //扫描余下的部分
if(a[min]>a[j]) //若有其它元素更小,就记录其下标
min=j;
if(min!=i) //保若最小值不在排序区首位,就换到首位
{t=a[min]; a[min]=a[i]; a[i]=t;}
}
}
7stelen 不读去字符串后面的‘\0’;