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()之外意外行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)