首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C编程: fgets()函数没有读取我认为应该读取的值

C编程中的fgets()函数用于从文件或标准输入流中读取一行字符串。它的原型如下:

代码语言:txt
复制
char *fgets(char *str, int n, FILE *stream);

该函数会读取最多 n-1 个字符,或者直到遇到换行符(包括换行符在内),或者达到文件末尾。读取的字符存储在 str 指向的字符数组中,并在末尾添加一个 null 字符来表示字符串的结束。

根据你的描述,如果fgets()函数没有读取到你认为应该读取的值,可能有以下几个原因:

  1. 输入流中没有包含你期望的值:fgets()函数会读取一行字符串,如果你期望的值不在这一行中,那么fgets()函数就不会读取到它。你可以检查输入流中的内容是否包含了你期望的值。
  2. 输入流中的值超过了指定的字符数组长度:fgets()函数会根据第二个参数 n 来限制读取的字符数量,如果输入流中的值超过了 n-1 个字符,那么fgets()函数只会读取 n-1 个字符,并在末尾添加一个 null 字符。你可以增加字符数组的长度或者使用其他函数来读取更长的字符串。
  3. 输入流中的换行符被忽略了:fgets()函数会读取换行符,并将其包含在返回的字符串中。如果输入流中的换行符被忽略了,那么fgets()函数可能会读取到更多的字符。你可以检查输入流中的换行符是否正确。
  4. 输入流中的换行符被替换为其他字符:有时候,输入流中的换行符可能被替换为其他字符,例如回车符。这可能导致fgets()函数无法正确读取一行字符串。你可以检查输入流中的换行符是否被替换了。

总结起来,如果fgets()函数没有读取到你认为应该读取的值,你可以检查输入流中的内容、字符数组的长度、换行符是否正确以及是否被替换等因素。根据具体情况进行调试和排查。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,这里无法给出相关链接。但腾讯云提供了丰富的云计算服务和解决方案,你可以访问腾讯云官方网站,了解他们的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

gets 、getchar 、fgets 、scanf用法

这里需要注意是,换行符不作为读取内容,读取换行符被转换为 null(’\0’) ,并由此来结束字符串。即换行符会被丢弃,然后在末尾添加 null(’\0’) 字符。...函数 gets 可以无限读取,不会判断上限,所以程序员应该确保 buffer 空间足够大,以便在执行读操作时不发生溢出。...由此可见,gets 函数是极其不安全,可能成为病毒入口,因为 gets 函数没有限制输入字符串长度。...所以我们应该使用 fgets 函数来替换 gets 函数,实际上这也是大多程序员所推荐做法。   ...示例代码运行结果为: aaaaaaaaaaaaaaaa 输出: aaaaaaaaaa   除此之外,C99 还提供了 fgets 函数宽字符版本 fgetws 函数,其函数一般原型如下面的代码所示

3.1K60

c语言中gets()详细用法

gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer空间足够大,以便在执行读操作时不发生溢出。...从stdin流中读取字符串,直至接受到换行符 大家好,是架构君,一个会写代码吟诗架构师。...今天说一说c语言中gets()详细用法,希望能够帮助大家进步!!! gets从标准输入设备读字符串函数。...本函数可以无限读取,不会判断上限,所以程序员应该确保buffer空间足够大,以便在执行读操作时不发生溢出。...这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) (fgets实际上可以读取标准输入(即大多数情况下键盘输入),具体参阅fgets词条)来替换gets()

1.5K20
  • C语言之文件使用(上)

    2.函数返回 以无符号char强制转换为int形式返回读取字符,当文件读取失败或者遇到文件结束都会返回EOF。  ...4.fgets 读取文件中一行字符数据,存储到一个数组中(返回该数组地址) 1.fgets一次操作一行数据,文件指针也是按顺序移动到下一行数据首地址。...2.函数返回 如果读取字符成功,该函数返回存储数据首地址; 如果达到文件末尾或者没有读取到任何字符,str指向数组内容不变,返回一个空指针NULL; 如果读取时发生错误,读取结束,返回一个空指针...之后也会更新相关文章,以补充这部分知识。...本文作者也只是一个正在学习C语言等编程知识萌新,若这篇文章中有哪些不正确内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言萌新和作者进行交流。

    84630

    C语言fputs()和fgets()函数

    C语言编程中,fputs()和fgets()函数用于从流中写入和读取字符串。 下面来看看看如何使用fgets()和fgets()函数写和读文件。...写文件:fputs()函数 fputs()函数将一行字符串写入文件,它将字符串输出到流。 其行为方式如下: (1)遇到换行或文件结束EOF则返回。 (2)按行读取。...(3)每一行结束处换行字符‘/n’也算该行字符。 (4)对于大小为sizebuf,最多只读取size-1个字符。...fputs()函数语法: int fputs(const char *s, FILE *stream) 示例:创建一个源文件:fputs-write-file.c,其源代码如下 - #include<...- hello c programming performance c programming 读取文件:fgets()函数 fgets()函数从文件中读取一行字符串,它从流中获取字符串。

    59010

    C语言fputs()和fgets()函数

    C语言编程中,fputs()和fgets()函数用于从流中写入和读取字符串。 下面来看看看如何使用fgets()和fgets()函数写和读文件。...写文件:fputs()函数 fputs()函数将一行字符串写入文件,它将字符串输出到流。 其行为方式如下: (1)遇到换行或文件结束EOF则返回。 (2)按行读取。...(3)每一行结束处换行字符‘/n’也算该行字符。 (4)对于大小为sizebuf,最多只读取size-1个字符。...fputs()函数语法: int fputs(const char *s, FILE *stream) 示例:创建一个源文件:fputs-write-file.c,其源代码如下 - #include<...- hello c programmingperformance c programming 读取文件:fgets()函数 fgets()函数从文件中读取一行字符串,它从流中获取字符串。

    1K88

    对文件各种操作详解

    也就是说,你在下一次读取字符时候会直接读到下一个字符 printf("%c\n", ch); //将ch从流中读取数据打印出来 ch = fgetc(pf); printf("%c\n",...2.fgets和fputs 2.1认识fgets和fputs fgets作用是从流中读取字符串,并将其存放到指定字符数组中 它有三个参数,第一个是用来储存从流中读取字符串变量,第二个参数...num含义指的是最多只能够从中取出num-1个字符,这里笔者认为是因为fgets这个函数它会自动地在取得字符后加'\0',因为没有'\0'的话,这个也就不能被称为字符串了,它在打印过程中就会打印出一系列随机直到遇到...这些理解都没有错,但是大部分这样理解的人久而久之就会错误地认为写东西就是输入,打印东西就是输出,这太片面了。...在我们c语言编程中,输入输出是相对于程序而言通过程序向外面(如屏幕)输送东西叫输出,用外面的东西(如通过键盘输入字符)向程序输入东西叫输入 这个才是输入输出真正含义,再举一个例子,通过程序向文件中输送数据

    12910

    C 文件读写1

    写入文件 函数 fputc() 把字符c写入到 fp 所指向输出流中。写入成功,它会返回写入字符ASCII码,发生错误返回 EOF。...int fputc( int c, FILE* stream ); 函数 fputs() 把字符串 s 写入到 fp 所指向输出流中,不包括\0。...\n"); fputs("饿了!\n", fp); fclose(fp); } 读取文件 fgetc() 函数从 文件中读取一个字符。...返回读取字符ASCII码,发生错误则返回 EOF。返回本身是字符ASCII码,赋给字符类型变量时,它会自己转换成字符类型。...函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets返回来判断函数是否是出错而终止应该借助feof函数或者ferror函数来判断。

    74440

    读取超级大单个文件,用这个方法一招搞定,你一定用着。

    本文使用多种编程语言,实现大文件读取。 ? PHP处理方式 大文件如果直接open,就会被整个写入内存,内存是吃不消。比如4G内存,10G文件,这是处理不了。...也没有哪个文本编辑器可以用。 常用file_get_contents函数,是将文件内容读入到字符串变量内。而字符串变量分配在内存,所以没有任何办法处理大文件。 一般做法是使用 fgets 函数。...函数格式如下: string fgets ( resource [, int ] ) 其中参数 $handle 是文件指针,从 $handle 指向文件中读取一行并返回长度最多为 $length...碰到换行符(包括在返回中)、EOF 或者已经读取了 $length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 $length,则默认为 1K,或者说 1024 字节。...结语 本文通过多种编程语言,实现了大文件读取

    1.9K40

    C语言基础】:文件操作详解(后篇)

    函数返回: 如果成功读取一个字符,则返回读取字符,如果已到达文件末尾或发生错误,则返回 EOF。 返回是整形原因: 读取成功,返回该字符ASCII。...函数原型: char * fgets ( char * str, int num, FILE * stream ); 从流中获取字符串 从流中读取字符,并将其作为C字符串存储到str中,直到读取(num...换行符使fgets停止读取,但它被函数认为是一个有效字符,并包含在复制到str字符串中。 在复制到str字符之后,将自动追加一个终止null字符。...如果出现错误,返回可能是 -1。通常情况下,返回应该是非负数,但标准并未规定返回的确切含义,因此应谨慎处理。...参数说明如下: stream:指向文件指针,它指定了要重置位置指针文件。 rewind 函数没有返回。它会将文件流位置指针设置为文件开头,以便重新读取文件内容或进行其他操作。

    13910

    【PHP】文件写入和读取详解

    【注意】fopen函数不能理解“\”分隔符,如果你想要使用“\”,那么要使用转义,如写成:"C:\\wamp64\\www\\text.txt"这种写法也是可以函数也能理解,不会报错。...> 运行后打开C:/wamp64/www/text.txt,发现文件内容并没有改变,说明由于没有设置相应权限,操作被忽略了 ?...value”(意为是初始) ?...,发现都是一笔带过去,这也是写这篇文章原因 三.文件读取和文件写入操作 先说说几个比较重要函数: • file_exists():判断文件是否存在,返回布尔 • filesize():判断一个文件大小...【注意】这里需要注意一点是,我们并没有从fpassthru($fp)获取到返回然后echo到页面上去,也就是说这个方法是会强制输出获取内容,而并不是像之前例子方法那样返回文本,允许我们保存到变量中才将其输出

    4K70

    C语言】文件操作(下)

    2.1.1 fgetc 和 fputc fgetc函数原型: 需要关注是fgetc函数返回,每当读到文件末尾时,函数就会返回一个EOF(end of file)。...在使用fgets函数一些小细节: 当fgets函数读取失败时,会返回一个空指针 针对fgets形参中int num,这个形参意思是允许拷贝最大字节数,其中‘\0’本来就占用这个形参位置。...(重点) fputs函数原型: fputs: fputs函数功能:向文件输入文本行内容。 如果该函数执行成功,那么它将会返回一个非负数。 限于篇幅原因,本次读写函数就介绍到这里。...剩余读写函数和随机读写函数,我会在之后文章中于大家分享,敬请期待!!! 3. 文件缓冲区 ANSIC标准(也就是标准C)采用“缓冲文件系统”处理数据文件。...如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满内存缓冲区),然后再从缓冲区中逐个地将数据送到程序数据区(程序变量等)。缓冲区大小根据C编译系统决定

    8710

    详细讲解C语言文件操作(示例分析每个函数)

    文件名包含3部分:文件路径+文件名主干+文件后缀 例如: 文件名如下 E:\编程\代码库\c语言代码库\进阶\c-language---advanced\文件操作\test.c 文件路径:E:\编程\...\n", pFile); } 原文件中数据↓ 指向追加代码后:↓ 4.14 fgets函数 函数功能: 从流中读取字符并将其作为 C 字符串存储到 str 中,直到读取 (num-...: 读到数据: 解释: fgets(str[0], 55, pFile);从文件第一行开始向后读取54个字符,但是还没有到54个字符时,先遇到了换行符,它使 fgets 停止读取,但它被函数视为有效字符...五、文件结束判定 feof函数 注意: feof函数经常被错用为是判断文件是否结束.而在文件读取过程中,不能用feof函数返回直接用来判断文件是否结束。...fgets 判断返回是否为 NULL . 二进制文件读取结束判断,判断返回是否小于实际要读个数。 例如: fread判断返回是否小于实际要读个数。

    65220

    linux系统下,警告:warning: implicit declaration of function ‘gets’ 和 war

    字符数组 英文名字是 char [] gets()函数基本用法为: char *gets(char *s); 该函数参数是一个字符数组,该函数返回也是一个字符数组。...-------------------------------------- 解决: 解决办法是使用 fgets,但由于fgets函数是为读取文件设计,所以读取键盘是没有gets那么方便。...fgets()函数基本用法为: fgets(char *s, int size, FILE *stream); 第一个参数是:字符类型数组,第二个参数是:标明这个数组大小,第三个参数是:如果总是通过键盘输入的话.../stdin 意思是键盘输入   printf("%s", name); //这边输出不需要 \n 了,实际操作时,fgets认为用户输入回车也是字符串一部分内容。...return 0; } ----------------------------------------------------------------------------- fgets认为用户输入回车也是字符串一部分内容

    3K10

    C文件操作2】如何随机进行文件读取

    上篇【C文件操作1】如何写入读取?fopen6种组合参数怎么用?介绍了C语言文件操作基本函数,fopen、fwrite、fread、fclose。这些只能从文件头读写或文件尾追加写入。...:无 */ void rewind(FILE *fp); 由于 rewind 函数没有返回,所以很难判断rewind(fp)是否执行成功。...因此,应该尽量使用 fseek 来替换 rewind 函数,从而以验证流已经成功地回绕 02 文件读取写入字符串 fputs fputs函数用于将一行字符串写入文件 函数原型: /** @func:...写入失败,返回EOF */ int fputs( char *str, FILE *fp ); fgets fgets 函数用来从指定文件中读取一个字符串,并保存到字符数组中...附:本篇以及上篇测试代码,可从gitee仓库获取(地址:https://gitee.com/xxpcb/c-test/tree/master/C-file-operate)~

    1.1K30

    18G大文件,PHP咋按行读取

    引言 想逐行读取文件,完全避免把这个文件加载到内存中。如果文件太大(比如 18G),无法在内存中打开,还是要硬来的话,会抛出异常。 大小编程语言都提供了文件按行读写,PHP 怎会没有!...正确方法 是不能够使用 file_get_contents 函数,一股脑把所有文件内容扔到内存。...应该使用 fgets 函数逐行读取: $handle = fopen("inputfile.txt", "r"); if ($handle) { while (($line = fgets($handle...比起我们常用一些文件操作函数: fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记 fread() - 读取文件(可安全用于二进制文件) fgetc() - 从文件指针中读取字符 stream_get_line...比一个个操作函数,有更强可扩展性。 写在最后 通过一个大文件按行读取,我们引出了 SplFileObject 这个文件操作对象,希望大家仔细地学习一下,可以大大提升功力。

    1.3K20

    C语言 文件读写实现

    大家好,又见面了,是你们朋友全栈君。...关于C语言文件读写,将介绍下面这几种方式: 字符读写:使用 fgetc() 函数 和 fputc() 函数; 字符串读写:使用 fgets() 函数和 fputs() 函数; 格式化读写...2. fgetc()函数 c=fgetc(fp); //用来从指定文本文件中读取一个字符。 其中,fp为文件指针,c为要写入字符。...该函数功能是从指定文件中读取一个字符,并赋值给字符型变量c函数返回读取成功,返回读取字符;读取错误或遇到结束标志EOF,返回EOF。...函数返回:该函数如果执行成功,返回读取字符串;如果失败,则返回空指针NULL,这时,s中内容不确定。

    1.9K10

    C语言】文件操作

    本文介绍了C语言中关于文件操作内容知识,内容较为生涩,没有理解可以多次观看 ---- ---- 一、为什么使用文件 我们在写代码过程中,有的时候某一些数据我们是想把它保存下来,而不是说只有在程序运行时候...There is no error return.通过这里feof函数返回介绍(如果当前位置不是文件末尾则返回一个0(有可能发生了读取文件错误),如果成功读取结束的话,将返回一个非0),我们就可以明白了...1.ferror(fault error)功能: 测试流上错误。如果流上没有发生错误,ferror返回0。否则,它返回一个非零。...if语句,但它并非我是所预取文件结束位置,虽然预期有可能是错误,但你返回<SIZE,认为这就是unexpected) { printf("Error...} } fclose(fp); } 6.4文本文件和二进制文件对比 (1)文本文件读取是否结束,判断返回是否为EOF(fgetc),或者NULL(fgets) 例如

    3.8K10

    C语言之文件使用(下)

    请随一同进入本篇文章中,将为你细致讲解C语言中文件操作。...2.不同文件所判断返回(文件结束特点) 1.文本文件:  由于函数不同,返回不同: (1)用函数fgetc,判断返回是否为EOF; (2)用函数fgets,判断返回是否为NULL;...2.函数fgets 如果读取字符成功,该函数返回存储数据首地址; 如果达到文件末尾或者没有读取到任何字符,str指向数组内容不变,返回一个空指针NULL; 如果读取时发生错误,读取结束,返回一个空指针...所以,可以用函数fgets判断返回是否为NULL。  ...本文作者也只是一个正在学习C语言等编程知识萌新,若这篇文章中有哪些不正确内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言萌新和作者进行交流。

    59330

    C语言教程:逐行读取数字方法

    C语言教程:逐行读取数字方法在C语言编程开发中,经常需要处理字符串或文本文件,并从中提取出数字。本文将介绍逐行读取数字方法,帮助初学者更好地理解和运用。...C语言 逐行读取数字方法一、引言数字在计算机编程中扮演着重要角色,应用广泛。而在处理字符串或文本文件时,需要将其中数字提取出来,进行计算或其他操作。...对于逐行读取数字,我们可以使用sscanf配合fgets函数实现。...,并使用fgets函数逐行读取文件内容,存储到line字符数组中。...五、总结逐行读取数字是C语言编程中常见需求,本文介绍了几种方法实现该功能。使用sscanf函数、strtol函数或正则表达式可以轻松地提取出数字,并进行后续操作。

    88440

    实现经常使用配置文件初始化文件读取一个C程序

    大家好,又见面了,是全栈君。 在编程中,我们常常会遇到一些配置文件或初始化文件。 这些文件通常后缀名为.ini或者.conf。能够直接用记事本打开。...里面会存储一些程序參数,在程序中直接读取使用。比如,计算机与server通信。serverip地址,段口号能够存储于ini文件里。这样假设想换另外一台server时。...本文中代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题。详细操作例如以下: 1. 首先用记事本创建一个config.ini文件(文件名称能够随便取)。...,readfile函数也就是实现我们读取功能函数,当中均存在struct Data中。...@#$%^&*()_+{}-[]\|:"/.," 这样读取文件代码应该很经常使用。要掌握。

    35210
    领券