C/常用函数

维基教科书,自由的教学读本
< C
跳到导航 跳到搜索

←回到C


标准I/O[编辑]

stdio.h中的常用函数。

printf[编辑]

转换说明符

转换说明符 意义 实例 输出
%a 浮点数、十六进制数字和p-记数法(C99)
%A 浮点数、十六进制数字和P-记数法(C99)
%c 单个字符
%d 有符号十进制数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e;%e格式在指数小于-4或者大于等于精度时使用
%G 根据数值不同自动选择%f或%E;%E格式在指数小于-4或者大于等于精度时使用
%i 有符号十进制整数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字(字母小写)的无符号十六进制整数
%X 使用十六进制数字(字母大写)的无符号十六进制整数
%% 打印百分号

修饰符

修饰符 意义 实例 输出
+/- 修饰数字修饰符,表示正负
空格
#
数字 整数部分表示最小字段宽度,小数部分表示精度
h 表示short,修饰整数表示有符号或无符号短整型
hh 表示short short,修饰整数表示有符号或无符号char型
j 修饰整数表示intmax_t或uintmax_t值
l 表示long,修饰整数表示有符号或无符号长整型
ll 表示long long,修饰整数表示有符号或无符号长长整型
L 表示long,修饰浮点数表示long double值
t 修饰整数表示一个ptrdiff_t值(C99)
z 修饰整数表示一个size_t值(C99)

scanf[编辑]

getchar[编辑]

int getchar(void) {

 static char buf[BUFSIZ];
 static char* bb=buf;
 static int n=0;
 if(n==0)
{
  n=read(0,buf,BUFSIZ);
  bb=buf;
 }

return(--n>=0)?(unsigned char)*bb++:EOF; }

putchar[编辑]

gets[编辑]

puts[编辑]

puts()函数将一串字符串输出后换行。

1 #include <stdio.h>
2 int mainint argc, char* argv[]
3 {
4     char str[] = "We are same.";
5     puts(str);
6     printf("%s\n", str );//该语句与上一条语句等效。
7 }

数学[编辑]

math.h中的常用函数。

内存[编辑]

realloc[编辑]

#include <stdio.h>
#include <stdlib.h>
int mainint argc, char* argv[]{
	char *s=NULL, *s_new=NULL;
	int i;

	s=(char*)malloc( 32 );
	bzero( s, 32 );
	strcpy( s, "Hello! world" );
	
	for(i=0;i<100;++i) {
		s_new=(char*)realloc( s, (1+i)*1024 );
		s=s_new;
		strcat( s, " 01234567890");
		printf("%d %s\n", i, s );
	}
	free( s );
}

型态转换[编辑]

atoi[编辑]

#include <stdio.h>
#include <stdlib.h>
int mainint argc, char* argv[]
{
    char str[] = "100";              /* 宣告字串 */
    printf("%d\n", atoi( str ) );    /* 轉換字串為數值, 同理可證 atol, atoll, atof */
}

字串处理[编辑]

sprintf[编辑]

sscanf[编辑]

strcmp[编辑]

相等回传0,如果不相等,则传回非0值

#include <stdio.h>
#include <stdlib.h>
int mainint argc, char* argv[]
{
    printf("strcmp(AA,BB)=%d\n", strcmp( "AA", "BB" ) );
    printf("strcmp(BB,AA)=%d\n", strcmp( "BB", "AA" ) );
}

strcpy[编辑]

strcat[编辑]

strlen[编辑]

strlen()函数返回一个记录字符串长度(不计入字符串结束符‘\0’)的整数。

1 #include<stdio.h>
2 #include<string.h>
3 int mainint argc, char* argv[]
4 {
5     char str[] = "Length";
6     printf("%d\n", strlen(str) );//输出6
7 }

算法[编辑]

qsort[编辑]

标准C函式库有内建Quick sort算法,使用时,需传入比较函数,让qsort()能作比较。

#include <stdio.h>
#include <stdlib.h>
#define nmemb 7
int compare( const void *a, const void*b ) {
	int *aa=(int*)a, *bb=(int*)b;
	if(*aa>*bb) return 1;
	if(*aa==*bb) return 0;
	if(*aa<*bb) return -1;
}
int mainint argc, char* argv[]{
	int base[nmemb]={ 3, 102, 5, -2, 98, 52, 18};
	int i;
	printf("Original...\n");
	for(i=0;i<nmemb;++i)
		printf"%d \n", base[i];
	qsort( base, nmemb, sizeof(int), compare );
	printf("after qsort...\n");
	for(i=0;i<nmemb;++i) 
		printf"%d \n", base[i];
}