求解答!!!!
本帖最后由 saul_yuan 于 2011-04-20 14:18 编辑
最近我在FreeBSD上做c语言实验题
要求写一个c程序,能自动搜索全目录找出指定文件,并输出文件内容,下面是我写的代码
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- printf("Please input filename which you need to search!\n");
- FILE *fp1, *fp2;
- char searchFilename[30];
- scanf("%s", &searchFilename);
- char printFile[100];//="cat ";
- char str[100] = "find / -name ";
- strcat(str, searchFilename);
- char record[]="> temp.txt";
- strcat(str, record);
- system(str);
- fp1 = fopen("temp.txt", "r");
- char load[100];
- fgets(load, 100, fp1);
- fclose(fp1);
- printf("%s", load);
- fp2 = fopen(load, "r");
- fgets(printFile, 100, fp2);
- printf("%s\n", printFile);
- //if(load == "\0"){
- // strcat(printFile, load);
- // system(printFile);
- // printf("%s", printFile);
- //}else{
- // printf("This file is not exited, please check again!\n");
- //}
- fclose(fp2);
- return 1;
- }
复制代码编译没问题,就是执行的时候有问题
比如,我当前目录下已经存在test.c文件了
然后黑屏输入输出为:
Please input filename which you need to search!
test.c
/usr/cworkspace/test.c
Segmentation fault (core dumped)
这究竟是什么原因啊!?求该问题解决方案,如果大神有全系统搜索指定文件并输出文件内容的c语言方案,能不能说说!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
结果还是一样...失败了
你检查fp2了吗?
额...没人搭理么!?不是我偏激,这不是号称中国最大的UNIX社区么!?乐于助人的牛人应该很多才对啊!
在这里用激将法通常会适得其反。。。。。
无所谓,本来来这就不多,上次问了个shell的问题也没人回答...反正一堆地方能问,我来这捧场也罢,慕名也罢,能解决问题才是关键,论坛嘛!本来就是脸熟党的天下~~
被换行符耍了。。。。据说中国程序员从来不检查返回值。
是不是load的值应该检查一下,我用cat检查temp.txt,里面是/usr/cworkspace/test.c$,我试图用for循环将其中的$改为NULL,但结果还是一样...
load里有换行符,操作在其上的fopen失败了,fp2是NULL。要把load里的换行符去掉。
复制代码
我试试~~~