WOJ:Starter:1046 - BONUS#4 - 统计字符
来源:互联网 发布:职业选手训练软件 编辑:程序博客网 时间:2024/06/04 19:03
gets()函数不能控制输入的长度,例如
char str[100];
gets(str);
如果用户输入10000个字符,情况会怎样呢?很显然,数组越界,程序很可能会崩溃,并且还有受到恶意输入导致遭受溢出攻击的风险。
可用的替代函数是 fgets, 原型类似于
char * fgets(const char *str, unsigned maxlen, FILE *fp);
例如 fgets(str, 100, stdin); 这样可以限制,输入的字符(包括末尾的'\0')不会超过100个,可以放心使用。
但是该函数与gets另一个不同的地方是,用户输入的回车并不会被吃掉,而是会原样存放在字符串中,需要特别注意。
p.s. 上面给出的例子中, stdin 是C语言预定义的一个 FILE * 类型的变量,对应于“标准输入”,默认情况下就是来自键盘的输入。
利用字符串的值作为数组下标,实现字符出现次数的统计
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ char words[10],str[1010]; char count[256];//ASCII码 int i; while(1){ fgets(words,10,stdin); fgets(str,1010,stdin); if(words[0]=='#') break; for(i=0;i<256;i++) count[i]=0; for(i=0;str[i];i++){ count[str[i]]++; } for(i=0;words[i];i++) if(words[i]!='\r'&&words[i]!='\n') printf("%c %d\n", words[i], count[words[i]]); } return 0; }
0 0
- WOJ:Starter:1046 - BONUS#4 - 统计字符
- WOJ:Starter:1052 - BONUS#A - 全排列
- WOJ
- woj
- Starter
- 字符统计
- 统计字符
- 统计字符
- 统计字符
- 统计字符
- 字符统计
- 字符统计
- 字符统计
- 字符统计
- 统计字符
- 统计字符
- 字符统计
- 统计字符
- 翻篇儿
- HDU 1176 免费馅饼
- 第一次来这里
- html 常用标签
- Android 多媒体编程笔记
- WOJ:Starter:1046 - BONUS#4 - 统计字符
- POJ 3693 Maximum repetition substring后缀数组加上RMQ
- 多线程——静态同步函数的锁的相关问题
- viewpager禁止滑动切换动画
- ARM编译中的RO、RW和ZI DATA区段
- hash用法
- 关于新版MySQL5.7数据库安装后使用自生成初始密码登录的问题(MAC版)
- 算法基础-字符移位
- 推荐系统中的常用算法