字符串是以空字符'\0' 结尾的char类型数组char name[40];
IO
fgets():stdio.h输入输出函数系列中的可选扩展
第二个参数指明读入字符的最大数量n,将在读入到第n-1或第一个换行符时,终止读入。换行符也会存储在字符串中。
第三个参数知名要读入的文件。可以用stdin作为参数。
gets_s(words,strlen);
fputs(str,stdout);
字符串输出:C的三个标准库函数
puts(str);
会在结尾自动参加换行符,遇到空字符时停止输出。
fputs();
第二个参数指明要写入的文件
不会在输出的末尾添加换行符
字符串函数
定义在string.h中的:
strlen()
用于统计字符串的长度,参数为字符串,返回值为长度
strcat()
接受两个字符串作为参数,将第二个字符串的备份附加在第一个字符串的末尾,第二个字符串不变
strncat()
strcat的安全版本,规定第三个参数指定最大添加字符数
strcmp
通过比较运算符来比较字符串,如果两个字符串参数相同,返回0,否则返回非0
strncmp()
扩展版本
strcpy
拷贝字符串
qsort()
void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void * , const void *))
- base — 指向要排序的数组的第一个元素的指针。
- nitems — 由 base 指向的数组中元素的个数。
- size — 数组中每个元素的大小,以字节为单位。
- compar — 用来比较两个元素的函数。
第一个参数是指针,指向待排序数组的首元素;第二个参数是待排序项的数量;第三个函数是数组中每个元素的大小,如sizeof(double),第四个参数确定了比较参数的形式,是一个指向函数的指针
如果 compar 返回值小于 0(< 0),那么 p1 所指向元素会被排在p2所指向元素的前面
如果 compar 返回值等于 0(= 0),那么 p1 所指向元素与 p2 所指向元素的顺序不确定
如果 compar 返回值大于 0(> 0),那么 p1 所指向元素会被排在 p2 所指向元素的后面。
#include <stdio.h>#include <stdlib.h>int values[] = { 88, 56, 100, 2, 25 };int cmpfunc (const void * a, const void * b){return ( *(int*)a - *(int*)b );}int main(){int n;printf("排序之前的列表:\n");for( n = 0 ; n < 5; n++ ) {printf("%d ", values[n]);}qsort(values, 5, sizeof(int), cmpfunc);printf("\n排序之后的列表:\n");for( n = 0 ; n < 5; n++ ) {printf("%d ", values[n]);}return(0);}
{char first[40];char last[40];}struct names staff[100];int comp(const void *p1,const void *p2){const struct names *ps1=(const struct names *) p1;const struct names *ps2=(const struct names *) p2;int res;res = strcmp(ps1->last,ps2->last);//比较姓if(res!=0) rsturn res;//若非同姓,直接返回else return strcmp(ps1->first,ps2->first);}qsort(staff,100,sizeof(struct names),comp);
