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 图标(如果你并没 ...
随机推荐
- Vim 中进行文件目录操作
Vim 中进行文件目录操作 当前文件名 我们知道Vim有48个寄存器,其中%只读寄存器中保存着当前文件路径. 例如在/home/harttle/下打开src/main.cpp,我们打印%的值: :ec ...
- H3C 802.11 WEP加密特点与注意事项
- 【异常】Zipkin server java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter containing tag keys [meth
解决办法: 添加下面配置就OK #zipkin启动报错无法访问的解决方法 management.metrics.web.server.auto-time-requests: false
- centos 长久路由表
由于用命令添加路由条目之后,重启程序后,条目会消失.所以需要用文件管理路由. 1.根据网卡创建路由表文件 vim /etc/sysconfig/network-scripts/route-eth0 2 ...
- Office--CVE-2017-11882【远程代码执行】
Office远程代码执行漏洞现POC样本 最近这段时间CVE-2017-11882挺火的.关于这个漏洞可以看看这里:https://www.77169.com/html/186186.html 今天在 ...
- 洛谷 P1162 填涂颜色题解
题目描述 由数字00组成的方阵中,有一任意形状闭合圈,闭合圈由数字11构成,围圈时只走上下左右44个方向.现要求把闭合圈内的所有空间都填写成22.例如:6 \times 66×6的方阵(n=6n=6) ...
- poj1502 MPI Maelstrom(单源最短路)
题意:表面乍一看output是输出最小值,但仔细研究可以发现,这个最小值是从点1到所有点所花时间的最小值,其实是访问这些节点中的最大值,因为只有访问了最长时间的那个点才算访问了所有点.所以求最短路之后 ...
- js动画--透明度变化
对于设置元素的透明度的变化.主要思想也是通过一个定时器来控制的. 此外对于透明度有一点要说明一下,就是在IE中我们在css中设置透明度的方式filter:alpha(opacity:value)其中v ...
- ECMAScript规范解读this
在<JavaScript深入之执行上下文栈>中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution conte ...
- xunit.core 控制台输出日志
参考链接: https://www.cnblogs.com/dudu/p/9391959.html http://landcareweb.com/questions/15813/xunit-netbu ...