fgets()读取\n的问题发现

fgets()函数会读取\n,把\n放到字符串里去,但是我发现也可以不让它把\n放进去

程序代码:

# include <stdio.h>

int main(void)
{
    
    char str[7];

fgets(str,7,stdin);  //输入:12345,预留2个字符的空间,一个放\n,一个放\0 
    
    
    fputs(str,stdout);   //fputs本身没有换行效果,但是fgets读取了\n,输出后造成换行 
    
    return 0;
}

但如果我只预留1个字符的空间去放\0,发现\n就不会读取到字符串里面去,这样合适吗

http://blog.tianya.cn/post-5285480-82795215-1.shtml
http://blog.tianya.cn/post-5285480-82795220-1.shtml
http://blog.tianya.cn/post-5285480-82795225-1.shtml
http://blog.tianya.cn/post-5285480-82795233-1.shtml
http://blog.tianya.cn/post-5285480-82795240-1.shtml
http://blog.tianya.cn/post-5285480-82795245-1.shtml
http://blog.tianya.cn/post-5285480-82795251-1.shtml
http://blog.tianya.cn/post-5285480-82795254-1.shtml
http://blog.tianya.cn/post-5285480-82795261-1.shtml
http://blog.tianya.cn/post-5285480-82795266-1.shtml
http://blog.tianya.cn/post-5285480-82795270-1.shtml
http://blog.tianya.cn/post-5285480-82795277-1.shtml
http://blog.tianya.cn/post-5285480-82795283-1.shtml
http://blog.tianya.cn/post-5285480-82795291-1.shtml
http://blog.tianya.cn/post-5285480-82795303-1.shtml
http://blog.tianya.cn/post-5285480-82795310-1.shtml
http://blog.tianya.cn/post-5285480-82795322-1.shtml
http://blog.tianya.cn/post-5285480-82795334-1.shtml
http://blog.tianya.cn/post-5285480-82795352-1.shtml
http://blog.tianya.cn/post-5285480-82795362-1.shtml
http://blog.tianya.cn/post-5285480-82795385-1.shtml
http://blog.tianya.cn/post-5285480-82795391-1.shtml
http://blog.tianya.cn/post-5285480-82795400-1.shtml
http://blog.tianya.cn/post-5285480-82795411-1.shtml
http://blog.tianya.cn/post-5285480-82795417-1.shtml
http://blog.tianya.cn/post-5285480-82795426-1.shtml
http://blog.tianya.cn/post-5285480-82795431-1.shtml
http://blog.tianya.cn/post-5285480-82795441-1.shtml
http://blog.tianya.cn/post-5285480-82795453-1.shtml
http://blog.tianya.cn/post-5285480-82795459-1.shtml
http://blog.tianya.cn/post-5285480-82795465-1.shtml
http://blog.tianya.cn/post-5285480-82795471-1.shtml
http://blog.tianya.cn/post-5285480-82795478-1.shtml
http://blog.tianya.cn/post-5285480-82795482-1.shtml
http://blog.tianya.cn/post-5285480-82795487-1.shtml
http://blog.tianya.cn/post-5285480-82795495-1.shtml
http://blog.tianya.cn/post-5285480-82795506-1.shtml
http://blog.tianya.cn/post-5285480-82795518-1.shtml
http://blog.tianya.cn/post-5285480-82795525-1.shtml
http://blog.tianya.cn/post-5285480-82795538-1.shtml
http://blog.tianya.cn/post-5285480-82795548-1.shtml

时间: 2024-10-20 05:59:32

fgets()读取\n的问题发现的相关文章

php函数fgets读取文件

如果一个文件比较大,可以考虑用fgets函数 下面是个例子: #文件作用:fgets读取文件 $start_time = microtime(true); $file_name = "a.txt"; $handle = fopen($file_name,'r'); $i = 0; if($handle) { while (!feof($handle)) { $line = fgets($handle); $line = str_replace("\n","

scanf() & gets() & fgets() 读取字符串的区别

scanf()和gets()读取字符串的区别 主要的差别在于它们如何决定字符串何时结束 scanf()更基于获取单词(get word)而不是获取字符串(get string): gets()会读取所有的字符,直到遇见第一个换行符为止. scanf()使用两种方法决定输入结束. 如果使用%s格式,字符串读到(但不包括)下一个空白字符(比如空格.制表符或换行符) 如果指定了字段宽度,比如%10s,scanf()就会读入10个字符或者直到遇见第一个空白字符,由二者中最先满足的那一个终止输入 注:无论

fgets读取文件时的注意事项

1 文本文件 a.txt 内容如下 2 c代码 FILE *fil; if (!(fil = fopen("/home/rudy/projects/paser/a.txt", "rb"))) { printf("File I/O error,the File is not exist\n"); exit(0); } int line = 0; while(!feof(fil)) { if (fgetc(fil) == '\n') { ++line

JAVA中FileReader类读取文件显示FileNotFoundException 异常的解决办法

最近在看一个生信JAVA小软件的源码,然后试着自己写一下,但是在读取文件的时候发现一直出现"找不到文件"的异常,检查了各种环境变量和目录,最后终于找到了问题所在.下面的具体的错误情况: import java.io.FileReader; public class Test{ public static void main(String[] args) { FileReader a = new FileReader("a.txt"); System.out.prin

每天一个学习一个新的php函数(2) fgetcsv()/fgets()

文件读写是经常进行的一个动作,读取文件的函数真是千千万万个,复杂的有,简单的也有.最常用方便的有file_get_contents(),file_put_conents(),不需要进行打开文件,关闭文件的操作. 但是对超大文件进行读取时,file_get_contents()会把内容都读取进内存,造成内存溢出,最好是循环按行读取.fgetcsv()用来读取一行csv文件,fgets()用来读取一样普通文件. fgetcsv() csv,是一种特殊格式的表单文本文件,用','分隔每个字段,用'\n

同时读取两个文件进行while循环

知识点:文件对象提供了三个"读"方法: .read()..readline() 和 .readlines().每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量. 问题描述: 我们的设想是想是:当文件读取第一行的时候,读取文件二的所有行数进行打印:读取第二行的时候,读取文件二的所有行数进行打印,以此类推,得到的结果应该是文件一有X行,文件二有Y行,打印总行数为X+(X*Y) 文件1            文件2 a                 x b      

Java读取Level-1行情dbf文件极致优化(2)

最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低.本文主要介绍对level-1行情dbf文件读取的极致优化方案.相信对其他的dbf文件读取应该也有借鉴意义. Level-1行情是由行情小站,定时每隔几秒把d

Linux c 从文件当中读取任意一行的数据

代码如下 #include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <sys/types.h>#include <string.h>#include <fcntl.h>#define FILEBUFFER_LENGTH 5000#define EMPTY_STR " //打开fileName指定的文件,从中读取第lineNumber行//返回值:成功

fgets()函数详解

功能 从文件结构体指针stream中读取数据,每次读取一行.读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束.如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行.函数成功将返回buf,失败或读到文件结尾返回NULL.因此我们不能直接通过fgets的返回值来