字符串

在C语言中,字符串是指一个或多个字符的序列,直接存储的在char数组中。用于存储字符串的数组末尾都会有一个\0字符,这个字符称为空字符(null character),C语言用它来指明字符串结束的位置。所以,通常来说,一个字符串的存储空间要比它本身的长度多一个字节。

\0是一个非打印字符,它的ASCII码是0.

在C语言中单引号表示一个字符,而双引号表示一个字符串,这两者是不同的,这一点和Python有区别,需要多加注意。

strlen()函数

strlen()函数是定义在string.h头文件中的,用于获取字符串的长度,它以字符为单位给出字符串的长度。而sizeof也是用来获取变量所占空间长度的,但是sizeof字节为单位给出数据的大小。

对于strlen()函数来说,它在遇到\0时就停止计数了,而sizeof则返回的是整个变量所占空间的长度,如下代码所示:

strlen返回值的类型是size_t,也即是unsigned int;sizeof返回值的类型是long unsigned int

1
2
3
4
5
6
7
8
#include<stdio.h>
#include<string.h>
int main()
{
    char c[40]="flyaway";
    printf("%lu\n",strlen(c));
    printf("%lu",sizeof(c));
}

上述代码输出为7和40,分别表示字符串实际的长度和字符串实际所占空间的长度。

预处理

C语言中的#define宏定义仅仅是简单的替换过程,它本身不是C语言的语句,因此不需要末尾不需要分号。

C语言在limits.hfloat.h头文件中分别提供了整数类型和浮点类型的大小限制的详细信息。

limits.h中的一些符号常量如下图所示:

limits.h中的符号常量

float.h中的符号常量如下图所示:

float.h中的符号常量

printf()函数

printf()函数是通过转换说明符(conversion specification) 来指定输出形式的,具体的转换说明符如下所示:

转换说明符

printf()的返回值是打印字符的数目,如果发生错误,就返回一个负值。

scanf()函数

scanf()函数是以空白符(空格、制表符、换行符)来分割输入串的,其转换说明符和printf()类似。

scanf()主要有两个注意点:

  1. scanf()来读取基本类型的数据时,要在变量之前加上&符号,这其实就是取出变量的地址。
  2. scanf()来读取字符串的时候,不需要使用&,数组名本身就是地址。

scanf()函数返回成功读入的项目的个数,如果它没有读入任何项目,则返回0.

Share on: TwitterFacebookEmail


Flyaway is the owner of this blog.
Comments

So what do you think? Did I miss something? Is any part unclear? Leave your comments below

comments powered by Disqus

Published

Category

programming-language

Tags

Contact