C语言做题常错的地方总结

  1. 字符串比较不能直接用== ,要用strcmp.
  2. 用strcmp时注意当相等时,返回0,在if语句中为不进入.
  3. 用gets才能读入带空格的字符串,scanf遇到空格,回车,TAB认为输入结束.
    但是因为gets不检查放入的变量的内存是否能够容纳输入的数据, 换句话说,如果输入的字符数目大于数组的长度,gets 无法检测到这个问题,就会发生内存越界,所以编程时建议使用 fgets()。
  4. 用gets和scanf("%c",&x)时,注意要用getchar()吃掉缓冲区的回车.
  5. 定义一个指针,要么让它指向某个变量, 要么给它动态分配内存.不要直接使用!
    因为没有初始化的指针指向的是一个未知的内存地址.
  6. 字符数组只有在定义时才能将整个字符串一次性的赋值给它,一旦定义完了,就只能一个字符一个字符的赋值了.例如:
	char str[7];
	str = "hello";  //错误
	//正确
	str[0] = 'a'; str[1] = 'b'; str[2] = 'c';
	str[3] = '1'; str[4] = '2'; str[5] = '3';
  1. 除了字符数组,C语言还支持另外一种表示字符串的方法,就是直接使用一个指针指向字符串,例如:
char *str ;
str = "xxxx"; //正确
或者
char *str = "xxx";
  1. 指针数组的输入操作,需要先动态分配内存给指针.
	char *string[10] = {NULL};

    for(i = 0; i < 10; i++) {
        string[i] = (char *)malloc(sizeof(char)*20);
        scanf("%s", string[i]);
    }
  1. float 的有效数字范围为7位有效数字
    double的有效数字范围为15~16位有效数字
    这里的有效数字范围包括小数和小数点前的数,
    例如:3.14 是3位有效数字
  2. 默认情况下, 编译器会把一个小数当做double类型
    如果写成float x = 3.14;
    则编译器会把double类型转换为float类型, 多做一步转换
    所以一般 float x = 3.14f;
  3. C语言内存布局:
    在这里插入图片描述

C语言中的 ‘\b’

C语言中的反斜杠b是将输出的定位前移一个字符的意思(可以在输出中删除刚输出的一个字符)。例如:printf(“abcde”); printf("\bABCD\n"); 后,实际的输出为abcdABCD(后输出的A把e覆盖了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值