首页
学习
活动
专区
工具
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()函数没有读取到你认为应该读取的值,你可以检查输入流中的内容、字符数组的长度、换行符是否正确以及是否被替换等因素。根据具体情况进行调试和排查。

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

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

相关·内容

【C语言程序设计——文件】文件操作(头歌实践教学平台习题)【合集】

若读取到文件末尾,fgetc() 函数会返回 EOF(EOF 是定义在 头文件中的常量,通常值为 -1),putchar(c) 函数用于将字符 c 输出到控制台。...若读取到文件末尾,fgets() 函数会返回 NULL。...文件关闭操作 无论对文件进行了何种操作(读取、写入等),在使用完文件后,都应该使用 fclose() 函数关闭文件,其函数原型为 int fclose(FILE *stream);。...像 fgetc() 函数,它从文件指针 fp 所指向的文件中每次读取一个字符,并返回该字符对应的 ASCII 码值(如果读取成功的话)。...= EOF 中,先执行 str = fgetc(fp),这一步调用 fgetc() 函数从文件中读取一个字符,并把返回值(字符对应的 ASCII 码值或者 EOF)赋给 str,然后判断 str 是否等于

12910

gets 、getchar 、fgets 、scanf的用法

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

3.3K60
  • c语言中gets()的详细用法

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

    1.6K20

    C语言之文件的使用(上)

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

    85730

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

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

    59910

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

    在C语言编程中,fputs()和fgets()函数用于从流中写入和读取字符串。 下面来看看看如何使用fgets()和fgets()函数写和读文件。...写文件:fputs()函数 fputs()函数将一行字符串写入文件,它将字符串输出到流。 其行为方式如下: (1)遇到换行或文件结束EOF则返回。 (2)按行读取。...(3)每一行结束处的换行字符‘/n’也算该行字符。 (4)对于大小为size的buf,最多只读取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语言编程中,输入输出是相对于程序而言的,我通过程序向外面(如屏幕)输送东西叫输出,我用外面的东西(如通过键盘输入字符)向程序输入东西叫输入 这个才是输入输出的真正含义,再举一个例子,我通过程序向文件中输送数据

    13410

    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函数来判断。

    74940

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

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

    15410

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

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

    4K70

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

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

    1.9K40

    【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编译系统决定的。

    9110

    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会认为用户输入的回车也是字符串的一部分内容

    3.1K10

    详细讲解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判断返回值是否小于实际要读的个数。

    68120

    【C 语言文件操作】—— 内存映射与高效 IO 策略的深度融合

    在实际编程中,应该始终检查fopen函数的返回值,以避免对无效的文件指针进行操作导致程序出错。...在while循环中,每次调用fgetc函数从文件中读取一个字符,并将其存储在变量c中。如果c不等于EOF,就表示还没有到达文件末尾,通过putchar函数将读取到的字符输出到标准输出(屏幕)。...这个数组的大小应该足够大,以避免缓冲区溢出。例如,可以定义char str[100];,然后将str作为s参数传递给fgets函数,用于存储读取的字符串。 num:表示最多读取n - 1个字符。...通过函数的返回值来判断 6.2、文本文件 判断文本文件是否读取结束通过判断fgetc的返回值是否为EOF,fgets的返回值是否为NULL,并且结合feof判断文件结束的状态 fgetc: int...当文件流stream在最近一次操作中出现错误时,ferror函数返回一个非零值(通常是 1),表示有错误发生;如果没有错误,ferror函数返回 0。

    28610

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

    上篇【C文件操作1】如何写入读取?fopen的6种组合参数怎么用?介绍了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语句,但它并非我是所预取的文件结束位置,虽然我的预期有可能是错误的,但你返回值我认为这就是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语言的萌新和作者进行交流。

    59530
    领券