fgets()在main()之外意外行为

fgets()在main()之外意外行为,第1张

概述我正在尝试在名为“a_function()”的函数中运行fgets(). int a_function(){ char* str; FILE *fp; fp = fopen( "./file.txt", "r" ); if( NULL != fp ){ fgets( str, 6, fp ); printf( "%s\n", str 我正在尝试在名为“a_function()”的函数中运行fgets().

int a_function(){    char* str;    file *fp;    fp = fopen( "./file.txt","r" );    if( NulL != fp ){        fgets( str,6,fp );        printf( "%s\n",str );    }else{        printf( "cannot find file\n" );        return 1;    }    return 0;}int main(voID){    a_function();    return 0;}

但是这样做会导致在调用fgets()函数时发生段错误.有趣的是,我可以将我的代码从a_function逐字复制到我的main()函数中,一切运行正常:

#include <st@R_502_6901@.h>#include <stdlib.h>int a_function(){    return 0;}int main(voID){    a_function();    char* str;    file *fp;    fp = fopen( "./file.txt",str );    }else{        printf( "cannot find file\n" );        return 1;    }    return 0;}

代码正在通过以下方式编译:

gcc -g -std=c11 test.c -o test

我在这里错过了什么?这是我的代码或我的电脑的问题?任何帮助表示赞赏.谢谢

解决方法
char* str;fgets( str,fp );

在这两种情况下你都在做上面的代码,这里没有初始化str,它包含不确定的值,输入到它会导致未定义的行为.两种情况都是不正确的,即使它有时也不会崩溃.

尝试执行以下 *** 作:

char str[6];fgets(str,sizeof str,fp);
总结

以上是内存溢出为你收集整理的fgets()在main()之外意外行为全部内容,希望文章能够帮你解决fgets()在main()之外意外行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存