fgets()在main()之外意外行为
发布时间:2020-12-16 10:02:40 所属栏目:百科 来源:网络整理
导读:我正在尝试在名为“a_function()”的函数中运行fgets(). int a_function(){ char* str; FILE *fp; fp = fopen( "./file.txt","r" ); if( NULL != fp ){ fgets( str,6,fp ); printf( "%sn",str ); }else{ printf( "cannot find filen" ); return 1; } retur
我正在尝试在名为“a_function()”的函数中运行fgets().
int a_function(){ char* str; FILE *fp; fp = fopen( "./file.txt","r" ); if( NULL != fp ){ fgets( str,6,fp ); printf( "%sn",str ); }else{ printf( "cannot find filen" ); return 1; } return 0; } int main(void){ a_function(); return 0; } 但是这样做会导致在调用fgets()函数时发生段错误.有趣的是,我可以将我的代码从a_function逐字复制到我的main()函数中,一切运行正常: #include <stdio.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 filen" ); 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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |