用c语言编写一个linux程序:通过find一个文件名,系统给一个路径,然后用c语言展开这个路径

用c语言编写一个关于linux程序:通过c语言liunx命令find一个文件名,系统打印出路径,然后赋值给c语言变量,然后通过c语言展开ls这个路径c语言变量。或者有其他... 用c语言编写一个关于linux程序:通过c语言liunx 命令find一个文件名,系统打印出路径,然后赋值给c语言变量,然后通过c语言展开ls这个路径c语言变量。或者有其他方法可以完成 展开
 我来答
刀劈华山
2019-04-09 · TA获得超过2273个赞
知道小有建树答主
回答量:1338
采纳率:72%
帮助的人:387万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char file_name[64] = {0};
    char file_path[128] = {0};
    char dir_path[64] = {0};
    char cmd[256] = {0};
    int  re = 0;
    FILE *pf = NULL;
    char *p = NULL;
    
    printf("请输入文件名:\n");
    scanf("%s", file_name);
    
    snprintf(cmd, 256, "find -name %s > tmp.txt", file_name);//如果文件不在程序运行的本地目录(或者子目录)下,则需要改成find / -name xxxx 但耗时会很长
    system(cmd);
    
    //文件中取绝对路径
    pf = fopen("tmp.txt", "r");
    if (pf)
    {
        re = fscanf(pf, "%s", file_path);//只取第一行 也就是默认不存在同名文件
        if (-1 == re)
        {
            printf("err0\n");
            return 0;
        }
        else
        {
            flcose(pf);
            pf = NULL;
        }
    }
    else
    {
        printf("err1\n");
        return 0;
    }
    
    if (0 == strlen(file_path))
    {
        printf("err2\n");
        return 0;
    }
    
    //获取目录名
    p = strstr(file_path, file_name);
    if (p)
    {
        *p = '\0';
        strcpy(dir_path, file_path);//也可以不cp直接用file_path
    }
    
    //通过c语言展开ls这个路径c语言变量 其实我没有理解这句话... 先这么做吧
    snprintf(cmd, 256, "ls %s", dir_path);
    system(cmd);
    
    return 0;
}

如果哪里有异常就加printf打印出来各个变量

更多追问追答
追问

大神
hillsl
2019-04-09 · TA获得超过1541个赞
知道小有建树答主
回答量:786
采纳率:51%
帮助的人:47.7万
展开全部
女王掉进习惯的陷阱了,她依照常识以为童话杰作的作家另外的著作一定也是童话。这就是习惯思维产生的障碍。
习惯性思维是指对于一个问题,只从单一方向、单一角度,僵化地、习惯性地进行思维。这种思维方式刚好与发散思维的流畅性、变通性和独特性相抵触,不利于创造力的发挥,应该加以克服。
1.关系固定化
实际上,世界上的任何事物都是普遍联系的,发生着各种各样联系,而且联系形式是网络化的形式,而不是单一线条的形式。也就是说,一事物总是与多种事物发生关系,联系在一起,而不是只与单一事物发生关系,联系在一起。但是,由于日常生活工作经验常使人们习惯地把一事物与另一事物的关系固定下来,久而久之,思维时常认为这一事物只与那一事物有关系、有联系,而忽略这一事物与其他事物的关系和联系,影响、阻碍问题的解决。
例如,一天晚上,汤姆正在读一本有趣的书时,妈妈把电灯关了。尽管屋子里漆黑一片,他却继续在读书。他是如何做到这一点的呢?回答这个问题的关键在于,在暗处汤姆仍在读书。对此,你可能不得其解。没关系,先对关键点提几个问题进行发散思维。例如,“尽可能多地说出‘他读的书’是什么样的书?”“尽可能多地说出‘他’是一个什么样的人?”“什么样的人能在暗处读书?”等,通过这些问题的发散思维,解决问题的线索就找到了。如果你没办法解决问题的话,原因就在于把“读书”必须“用眼睛看”这一关系固定化。对于常人是这样,但对于盲人,读书不是用眼睛看,而是用手摸。所以,不管屋子是亮堂堂的还是漆黑一片,盲人照样能读书。
所以,当解决问题感到不得其解、束手无策时,先分析出解决该问题时无法解释的关键点,并用一句话表述出来。例如上例的关键点是“在暗处他仍在读书。”然后对关键点中各个要素进行思维发散,如上例的“尽可能多地说出‘他读的书’可能是什么样的?”“尽可能多地说出‘他’可能是什么样的人?”等。通过发散,就可以摆脱关系固定化,找到解决问题的线索。
2.性质固定化
事物的性质是多种多样的,但由于日常接触到的某种事物常常只表现出某种性质,而其他性质不常表现。久而久之,在人们的头脑中形成了一个深刻的印象,一提到这种事物,马上想到该事物的这种性质,固执地认为这种事物只有这种性质,而不是进一步发散,想想是否还有其他的性质,影响和阻碍问题的解决;例如,查理宣称,在某一天的某一时刻,他将创造一个伟大的奇迹:他将在哈得逊河水。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式