C Note 20210629

二维数组


    int arr[5][5] = 
    {
        {1,2,3,4,5},
        {2,3,4,5,6},
        {3,4,5,6,7},
        {4,5,6,7,8},
        {5,6,7,8,9},
    };
    

arr == &arr[0][0] == arr[0]

字符串与字符数组


字符串是字符数组的一个特例

char str[5] = {'h', 'e', 'l', 'l', 'o'};
//这样末尾不会补\0,但我本地的编译器好像没问题?
//但是如果用scanf()获取输入的话末尾就不会有\0,printf()打印就会出问题。
char str[6] = {'h', 'e', 'l', 'l', 'o'};
//str[5]会被自动填充上\0。

字符串相关函数


gets()

char *gets(char *s)

s: 用来存储字符串的空间
return: 返回实际获取到字符串的首地址
并不建议使用

fgets()

char *fgets(char *s, int size, FILE *stream)

s: 存储字符串的空间地址
size: 空间的大小
stream: 读取字符串的位置。文件描述符,stdin
return: 与gets一样,返回获取到的字符串的首地址
如果有足够的位置,会读入\n,如果没有足够的位置则会舍弃\n,给\0留出位置

puts()

int puts(char * s)

s: 待写出到stdout的字符串
return: 成功为非负数,失败为-1。
输出字符串后会自动添加换行
gcc9.3编译生成的返回值为实际输出的字符数(包含换行)

fputs()

int fputs(const char * str, FILE * stream)

str: 待输出字符串
stream:
return: 0 == success, -1 == failed.
末尾不会自动补充换行符

strlen()

size_t strlen(const char *s)

s: 待求长度的字符串。
return: 字符串长度
strlen()会被\0截断 与sizeof不同的是,strlen只要碰到\0就会结束

其他


size_t

windows:

unsigned int64

linux:

long unsigned int
Avatar photo 心有所向,日复一日,必有精进。 Twitter Tweet