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];
}