重读《C primer plus》(十一)

发布于:2022-12-06 ⋅ 阅读:(714) ⋅ 点赞:(0)

一、表示字符串和字符串I/O

1.在程序中定义字符串

1.字符串字面量(字符串常量)

用双引号括起来的内容称为字符串常量。

2.字符串数组和初始化

c99之后有着变长数组的概念,即char crumbs[n];

3.数组和指针

  • 联系:1.两者都可以使用数组表示法。2. 两者都可以进行指针加法操作
  • 区别:假设有下面两个声明:
char heart[] = "I love you!";
const char *head = "I love you!";

1.只有指针表示法可以进行递增操作。2.可以这样head = heart;,但是不能heart = head;。3.初始化数组把静态存储区的字符串拷贝在数组中,而初始化指针只把字符串的地址拷贝到指针。

二、字符串输入

  1. gets()函数
    有着安全隐患,已经逐渐要被淘汰掉
  2. fgets()函数
    会保留输入末尾的换行符作为字符串的一部分,要编写额外的代码,来将换行符替换成空字符。
  3. gets_s()函数
    只从标准输入中读取字符,所以不需要第3个参数,如果读到换行符会将其丢弃,而不是存储。
    鉴于此,fgets()通常是处理类似情况的最佳选择。
  4. scanf()函数
    scanf()和gets()类似,也存在一些潜在的缺点。如果输入行的内容过长的话,scanf()也会导致数据溢出。不过,在%s转换说明中使用字段宽度可防止溢出。

三、字符串输出

  1. puts()函数
    该函数遇到空字符时就停止输出,所以必须确保有空字符。
  2. fputs()函数
    要注意puts()和gets()配套使用,fputs()和fgrts()配套使用。
  3. printf()函数
    形式更为复杂,计算机执行时间也更长

四、自定义输出/输入函数

可以自定义一个满足自己需求的函数。

//put1.c
#include<stdio.h>
void put1(const char * string){
	while(*string != '0')
		putchar(*string++);
}

五、字符串函数

  1. strlen()函数:strlen()函数用于统计字符串的长度。
  2. strcat()函数:用于拼接两个字符串
  3. strncat()函数:该函数的第三个参数指定了最大添加字符数。如strncat(bugs,addon,13)
  4. strcmp()函数:用于字符串比较,其返回值有正、负和0,取决于字符串在ASCLL中的位置。
  5. strncmp()函数:可以只比较第三个参数指定的字符数。
  6. strcpy()函数:拷贝字符串
  7. strncpy()函数:第三个参数指定可拷贝的最大字符数。
  8. sprintf()函数:此函数声明在stdio.h中,而不是string.h

六、选择排序算法

利用选择排序算法来排序指针,具体做法是利用for循环依次把每个元素与首元素比较。如果待比较的元素在当前首元素的前面,则交换两者。重复这一过程直到倒数第二个元素为止。现在只剩下两个元素比较这两个元素,将较大的元素放在倒数第二的位置。这样,数组中最小元素就出现在最后的位置上。

八、命令行参数

  1. DOS或者UNIX都是使用命令行编译程序,因此在同一行中可以自己加参数。
  2. 集中开发环境中(IDE),可以使用可运行命令行的编译器,如GCC之类。

九、把字符串转换为数字

需要用的函数:

atoi();
strtol();
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到