外貿(mào)工廠 網(wǎng)站建設(shè)國內(nèi)免費(fèi)域名注冊
三對基本輸入輸出函數(shù)
1.gets(),puts()
gets()從標(biāo)準(zhǔn)輸入中獲取一個(gè)字符串,到str(自己創(chuàng)建的char型數(shù)組)中,讀到換行或輸入末尾結(jié)束獲取r;
成功返回str,失敗返回空。
char *gets(char *str);
puts()把一個(gè)字符串寫入標(biāo)準(zhǔn)輸出,直到讀到\0;
成功返回字符串長度,包括\0,失敗返回EOF。
int puts(const char *str);
2.getchar(),putchar()
getchar()從標(biāo)準(zhǔn)輸入中獲取一個(gè)字符;
成功返回字符阿斯克碼值,沒讀到字符返回EOF;
int getchar(void);
putchar() 將一個(gè)字符寫入標(biāo)準(zhǔn)輸出;
成功返回要被寫入的字符的阿斯克碼,失敗返回EOF;
int putchar(int char);
3.scanf(),printf()
scanf()從標(biāo)準(zhǔn)輸入讀取格式化輸入;
成功返回匹配和賦值的個(gè)數(shù),失敗/讀完返回EOF。
format是字符串
int scanf(const char *format, ...);
printf()發(fā)送格式化輸出到標(biāo)準(zhǔn)輸出;
成功返回寫入的字符總數(shù),否則返回一個(gè)負(fù)數(shù)
int printf(const char *format, ...);
常用格式字符:
a:16進(jìn)制浮點(diǎn)數(shù);x:16進(jìn)制無符號整數(shù);
d:10進(jìn)制整數(shù);o:8進(jìn)制無符號整數(shù);u:10進(jìn)制無符號整數(shù);
f:小數(shù)單、雙精度實(shí)數(shù);e:指數(shù)單、雙精度實(shí)數(shù)(科學(xué)計(jì)數(shù)法)
c:字符;s:字符串;p:指針地址。
字符串操作函數(shù)
strcpy復(fù)制字符串
參數(shù):
dest?-- 指向用于存儲復(fù)制內(nèi)容的目標(biāo)數(shù)組。
src?-- 要復(fù)制的字符串。
返回值:
返回一個(gè)指向最終的目標(biāo)字符串 dest 的指針
char *strcpy(char *dest, const char *src);
strcmp()比較字符串
????????比較字符串每個(gè)字符的阿斯克碼值。
參數(shù):
str1?-- 要進(jìn)行比較的第一個(gè)字符串。
str2?-- 要進(jìn)行比較的第二個(gè)字符串。
n?-- 要比較的最大字符數(shù)。
返回值:
返回值==0,str1==str2;
返回值<0,str1<str2;
返回值>0,str>str2。
int strncmp(const char *str1, const char *str2, size_t n);
strlen()求字符串長度
求長度遇到\0結(jié)束,不包含\0
????????sizeof()是包含\0的
size_t strlen(const char *str);
strncpy最多復(fù)制n個(gè)字符
dest?-- 指向用于存儲復(fù)制內(nèi)容的目標(biāo)數(shù)組。
src?-- 要復(fù)制的字符串。
n?-- 要從源中復(fù)制的字符數(shù)
char *strncpy(char *dest, const char *src, size_t n);
strncmp比較字符串前n個(gè)字符
str1?-- 要進(jìn)行比較的第一個(gè)字符串。
str2?-- 要進(jìn)行比較的第二個(gè)字符串。
n?-- 要比較的最大字符數(shù)。
int strncmp(const char *str1, const char *str2, size_t n);
strtok()字符串分割
str?--字符串
delim?--分隔符
每一次分割,將str中匹配到delim的字符換成\0,下一次分割從strtok(NULL,delim)開始
char *strtok(char *str, const char *delim);
strcat()字符串拼接
dest?-- 指向目標(biāo)數(shù)組,該數(shù)組包含了一個(gè) C 字符串,且足夠容納追加后的字符串。
src?-- 指向要追加的字符串,該字符串不會覆蓋目標(biāo)字符串。
返回指向dest的指針
char *strcat(char *dest, const char *src);
?mem系列函數(shù)
常用的:memcpy,memcmp,memset
mem系列對比str系列:str只能用于char型,mem可以給所有類型用
memcpy復(fù)制
從存儲區(qū)?str2?復(fù)制?n?個(gè)字節(jié)到存儲區(qū)?str1
void *memcpy(void *str1, const void *str2, size_t n);
?memcmp比較
把存儲區(qū)?str1?和存儲區(qū)?str2?的前?n?個(gè)字節(jié)進(jìn)行比較,返回值同strcmp。
int memcmp(const void *str1, const void *str2, size_t n);
?memset設(shè)置n個(gè)c(多用于清空)
?復(fù)制字符?c(一個(gè)無符號字符)到參數(shù)?str?所指向的字符串的前?n?個(gè)字符。
void *memset(void *str, int c, size_t n);
上述函數(shù)使用:?
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
int main()
{char a[20] = "123456789";char b[20] = "";int arr[5] = { 1,2,3,4,5 };int arrb[5];printf("將a中三個(gè)字符復(fù)制到b\n");strncpy(b, a, 3);puts(b);printf("將a中五個(gè)個(gè)數(shù)據(jù)復(fù)制到b\n");memcpy(b, a, 5);puts(b);printf("將arr中五個(gè)數(shù)據(jù)復(fù)制到brr\n");memcpy(arrb, arr, 5 * sizeof(int));printf("清空b\n");memset(b, 0, 20);puts(b);//清空arr// memcpy(arr, 0, sizeof(int) * 5);memset(arr, 0, sizeof(int) * 5);printf("將abc連接到a字符串后面\n");strcat(a, "abc");puts(a);
}
文件操作函數(shù)
開fopen,關(guān)fclose;讀fread,寫fwrite;
取字符fgetc,fputc;fgets,fputs;fscanf,fprintf;fseek,ftell;rewind;
fseek()
- stream?-- 這是指向 FILE 對象的指針,該 FILE 對象標(biāo)識了流。
- offset?-- 這是相對 whence 的偏移量,以字節(jié)為單位。
- whence?-- 這是表示開始添加偏移 offset 的位置。它一般指定為下列常量之一:
int fseek(FILE *stream, long int offset, int whence);
ftell()返回當(dāng)返回給定流 stream 的當(dāng)前文件位置
- stream?-- 這是指向 FILE 對象的指針,該 FILE 對象標(biāo)識了流。
long int ftell(FILE *stream);
rewind()?設(shè)置文件位置為給定流?stream?的文件的開頭
long int ftell(FILE *stream);