C出错集

1、数组未初始化导致结果错误

 int b[10]={0}; //记得全部初始化为0,不然就注意不要读取未设置的数据

2、char型二维数组表示字符串并输出

//初始化
char  c[101][101]; 
memset(c,'#',sizeof(c));//所有字符赋值‘#’

//赋值
char a[100]="abcd"; //占5个字节,还有一个'\0'结束符
strcpy(c[0],a);  //字符串不能用=,只能用strcpy

//输出,只输出赋值了的
 int i,j;
 for(i=0;i<n;i++){
                  for(j=0;j<101 && (c[i][j]!='#');j++)
                  {   
                      printf("%c",c[i][j]);
                  } 
                  if(j!=0) printf("\n");

                  }


输出结果

3、关于sizeof和strlen
sizeof用于计算数组的大小,数组的初始大小有多大,sizeof就多大。
strlen用于计算字符串的长度。

4、注意,在c语言中,数组,变量未初始化,都是乱码,随机数。所以一定要初始化。

 char b[100]={'\0'};   printf("%s",b); //输出为空
 char b[100]={0}; //与上面'\0'一样的效果,输出空。
 char b[100]={'0'}; //输出为0
 //第一个'0',后面99个默认为'0';但如果没有这步初始化,就是随机乱码

5、’\0’ 和 0,’0’区别

‘\0’常用于字符串结束标记,不能输出。\0的ascii码为0。
0就是普通的即时常量,ascii码为0。
‘0’是字符常量,ascii码为48。
如果是为了初始化,’\0’和0两者没有区别.所以代码中给字符数组最后一位添加结束标记形成字符串时写’\0’而不写0具有提示意义,便于阅读,没有别的意思。

6、关于数组的几点总结
a、数组只能在初始化时赋值,之后想赋值就要用memset。

int b[6]={1}; //输出结果:100000

int  b[100]; 
memset(b,1,sizeof(b));//所有都赋值为1

b、两个数组之间不能相互赋值

int arr1[5] = {1,2,3,4,5};
int arr2[5];
arr2 = arr2; //错误!整个数组之间不能直接相互赋值。

//可以通过循环赋值,这也称为数组间的拷贝
for(int i=0;i<5;i++)
{
    arr2[i] = arr1[i]; //正确,数组元素之间可以相互赋值。
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值