scanf sscanf fscanf fgets printf sprintf snprintf 等函数
2015-06-13 00:04
471 查看
int scanf(const char *format, ...); int fgetc(FILE *stream); char *fgets(char *s, int size, FILE *stream); int getc(FILE *stream); int getchar(void); char *gets(char *s); int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format,...); int sscanf(const char *str, const char *format, ...); int fscanf(FILE *stream, const char *format, ...); 这些函数都在#include <stdio.h>头文件中
我对这些函数的理解
1 scanf函数 int num; char buf[20] = {0}; scanf("%s",buf) scanf("%d",&num) scanf("%c",&buf[3]) 这是读取的形式 scanf(" %d",num);在%d前面留出一个空格的作用是过滤到没有用的字符 比如在输入缓存区的应用 scanf("%5d",&num)等 2fgetc函数是在一个文件流中依次读取一个字符 如 #include <stdio.h> int main( void ) { FILE *fp = NULL; fp = fopen( "./student","r" ); char c; while( (c = fgetc(fp)) != EOF ) printf("%c",c); return 0; } 3fgets 就是从stream流文件中读取 size个字节放在 char *s指向的空间中 4getc是从流入读取内容与fgetc用法相同。 5getchar()从标准输入读取一个字符 通常用来暂停程序 6gets函数从标准输入读取一串字符串放入s所指向的内存 这4个函数重点说下 int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format,...); int sscanf(const char *str, const char *format, ...); int fscanf(FILE *stream, const char *format, ...); sprintf函数一般用于把数字转化为字符串 如 sprintf(buf,"%d",num) 就把num以字符串形式放到buf中 snprintf 就是多了一个\0 如 i = snprintf(buf,9,"%012d",12345); printf("buf=%s,i=%d\n",buf,i); 结果为 00000001 12 snprintf返回的是格式化后的字符串长度 则为12 所以i 为12 又因为输出的结果是000000012345 但是只把9个输入到buf中并且最后一个是\0 所以是00000001 sscanf 是从字符串中输入 fscnaf是用文件中输入 和scanf使用的格式是相同的 /* char src[20] = "123456789"; char buf[20] = {0}; sscanf(src,"%5s",buf); printf("%s\n",buf); 结果为12345 */ /* char src[20] = "123/456789"; char buf[20] = {0}; sscanf(src,"%[^/]",buf); printf("%s\n",buf); 结果为123 */ /* char src[20] = "123abcABC"; char buf[10] = {0}; char buf1[10] = {0}; char buf2[10] = {0}; sscanf(src,"%[0-9]%[a-z]%[A-Z]",buf,buf1,buf2); printf("buf=%s buf1=%s buf2=%s\n",buf,buf1,buf2); 结果为 buf=123 buf1=abc buf2=ABC */ /* char src[20] = "iso<android>wp"; char buf[20] = {0}; sscanf(src,"%*[^<]<%[^>]",buf); printf("%s\n",buf); 结果为android */ /*------------------------------------- char src[20] = "isoVSandroid"; char buf[20] = {0}; char buf1[20] = {0}; sscanf(src,"%[a-z]VS%[a-z]",buf,buf1); printf("%s\n",buf); printf("%s\n",buf1); 结果为buf=iso buf1=android */ /* sixth stats char src[20] = "123abcABC"; char buf[10] = {0}; sscanf(src,"%[^A-Z]",buf); printf("%s\n",buf); 结果为123abc */ /*-------------------------------------------- char src[20] = "iso VS android"; char buf[20] = {0}; char buf1[20] = {0}; char buf2[20] = {0}; sscanf(src,"%s %*s %s",buf,buf1,buf2); printf("%s\n",buf); printf("%s",buf1); printf("%s\n",buf2); 结果为 buf=iso buf1是空 %*s代表过滤掉这个字符串 buf2=android */
相关文章推荐
- OpenGL 键盘控制和灯光
- Light OJ 1025 The Specials Menu(区间DP)
- 0. 序列
- FIQ和IRQ的区别及CPU实现
- 马云——2015纽约经济俱乐部演讲全文
- ELF Format 笔记(二)—— ELF Header
- CString时间字符串,COleDateTime,CTime类之间的转换
- ASP.NET中母版页和shtml实例入门
- ASP.NET中Application全局对象用法实例浅析
- ASP.NET中Global和URLReWrite用法
- ASP.NET中ServerPush用法实例分析
- asp.net实现在非MVC中使用Razor模板引擎的方法
- asp.net模板引擎Razor中cacheName的问题分析
- asp.net模板引擎Razor调用外部方法用法实例
- PHP获取数组的键与值方法小结
- 隐性调用php程序的方法
- php数组随机排序实现方法
- JQuery中DOM加载与事件执行实例分析
- JQuery中DOM事件绑定用法详解
- JQuery中DOM事件合成用法实例分析