fgets注意事项

这是yjy的习题库,中途我在使用fgest时颇费了一点心思,特此记录一下。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main (void)
{
char (*arry)[];
int n,tmp,i,j;
char *find;
scanf("%d",&n);
getchar();/* sancf 输入的时候会有换行符输入,该函数是为了吃掉\n,因为fegets遇到\n就结束*/
arry=(char (*)[])malloc(n*sizeof(char)*);
for(i=;i<n;i++) {
/* fgets 读到count-1个字符或者遇到\n就终止,所以这里选择6
* 6-1=5 由于只会输入4个有用字符(例如为abcd),最后会有\n,此时字符数组中有
* 我输入的4个字符a b c d + \n \0 有\n是因为fgets要吸收输入时的\n,且fgets会
* 自动在最后加上\0。
* NOTE:使用fegts,输入第二个参数时,建议为输入的有效字符+2,例如我这里要输入4个
* 有效字符,为了容错\n和\0
*/
if(fgets(arry[i],,stdin)==NULL) {
return -;
}
if((find=strchr(arry[i],'\n'))!=NULL) {
*find='\0';
}
/* 如果我们把6改成5,则需要把该屏蔽放开。
* 因为如果为5,当输入abcd四个字符时,feget就会结束,此时还有\n在输入缓存区
* 所以需要getchar();吃掉\n。最后的arry[i]中是a b c d \0 结尾。
*/
/* getchar(); */
}
for(i=;i<n;i++) {
for(j=;j</;j++) {
tmp=arry[i][j];
arry[i][j]=arry[i][-j];
arry[i][-j]=tmp;
}
printf("%s\n",arry[i]);
}
free(arry);
return ;
}

fgets注意事项的更多相关文章
- fgets读取文件时的注意事项
1 文本文件 a.txt 内容如下 2 c代码 FILE *fil; if (!(fil = fopen("/home/rudy/projects/paser/a.txt", &q ...
- scanf() gets() fgets()使用注意事项
1.scanf() 遇到'\n'停止从输入缓冲区中接收,接收完后‘\n’还存在于缓冲区中.当输入的字符数少于缓冲区大小时,字符后面有自动补上‘\0’,当输入字符大于缓冲区时,也直接拷贝到缓冲中,因此缓 ...
- Linux C 字符串输入函数 gets()、fgets()、scanf() 详解
一.gets() 函数详解 gets()函数用来从 标准输入设备(键盘)读取字符串直到 回车结束,但回车符('\n')不属于这个字符串. 调用格式为: gets(str); 其中str为字符串变量(字 ...
- 深入分析PHP优化及注意事项
深入分析PHP优化及注意事项 1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显 ...
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- TODO:Golang指针使用注意事项
TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- favicon.ioc使用以及注意事项
1.效果 2.使用引入方法 2.1 注意事项:(把图标命名为favicon.ico,并且放在根目录下,同时使用Link标签,多重保险) 浏览器默认使用根目录下的favicon.ico 图标(如果你并没 ...
随机推荐
- MySQL IFNULL() 函数
MySQL函数 IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值. IFNULL() 函数语法格式为: IF ...
- SQL注入之Sqlmap使用
我们都知道,对于网络渗透最重要的一步是要拿到后台数据库管理员的密码与用户名,那么怎么得到这个用户名和密码呢?就要用到今天所说的Sqlmap,它不仅适用于内网环境,在外网环境也是非常受欢迎的,并且在Ka ...
- Haproxy 让后端RS记录真实IP
一.修改haproxy.cfg配置文件,在defaults中加入如下两行,并重启haproxy. vim /etc/haproxy/haproxy.cfg defaults option http-s ...
- MoveIt简单编程
目的:使用一些简单代码使机器人运动到指定位置.讲解代码怎么实现机器人的运动. 参考文献: 第一个博客需要下载<Mastering ROS for robotics Programming> ...
- 关于__int 128 的读入与输出
inline __int128 read() { ,w=; ; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} )+(X<<)+(ch^),c ...
- django小知识(1)
聚合查询 关键字:aggregate from django.db.models import Max,Min,Count,Sum,Avg 分组查询 关键字:annotate 1.最简单的规律 mod ...
- What is Babel?---JSX and React
Babel is a JavaScript compiler Babel is a toolchain that is mainly used to convert ECMAScript 2015+ ...
- fitnesse管理引进的jar包
如下:需要引进的jar很多,并且路径都不一样,这样增加删减jar就比较麻烦 !*> setup!define TEST_SYSTEM {slim}!define LOCAL_PATH {C:\ ...
- 拓展-教你手把手用纯CSS写轮播图
先看成品图[示例网址:][1] [1]: https://huruji.github.io/css-imitate-js/slider/index.html一.随便说几句####css3动画效果的强大 ...
- 全部文章> Maven
Maven 原 Maven中<resources>标签详解 &nbsp;&nbsp;&nbsp;&nbsp;& ...