gpt4 book ai didi

检查文件是否是c文件并编译它

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:21 26 4
gpt4 key购买 nike

我想递归地运行一个目录及其文件和子目录。假设该目录可以包含任何文件之王(c、txt、python ....)检查当前文件是否为 c 文件并编译它是否是。这是我目前所拥有的:

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <fcntl.h>
#include <stdlib.h>
#include<errno.h>

void listdir(const char *name, int indent)
{
DIR *dir;
struct dirent *entry;

if (!(dir = opendir(name)))
return;

while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
char path[1024];
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
continue;
snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
printf("%*s[%s]\n", indent, "", entry->d_name);
listdir(path, indent + 2);
} else {
printf("%*s- %s\n", indent, "", entry->d_name);
}
}
closedir(dir);
}

int main(void) {
listdir(".", 0);
return 0;
}

如何检查一个文件是否是一个c文件?以及如何使用代码编译它?任何帮助将不胜感激。

最佳答案

您的问题很可能被误导(您可能有一个 XY problem ):编译 C 很少是在其上运行编译器的微不足道的事情:您可能需要知道什么 -I-D (以及其他)编译它需要使用的标志,需要链接到哪些库等等。

how can I check if a file is a c file? and how to I compile it using the code?

您可以运行 system("gcc -c $file.c") 如果它编译(system 返回 0),它可能是一个 C 文件。

注意:如果文件没有编译,可能是因为它不是C 文件,或者因为您没有将正确的标志传递给编译器.

how do I make it run my current file?

像这样:

char path[PATH_MAX];
char cmd[4096 + 2*PATH_MAX];

snprintf(path, sizeof(path), "%s/%s", name, entry->d_name);
snprintf(cmd, sizeof(cmd), "gcc -c %s -o %s.o", path, path);
if (system(cmd) == 0) {
printf("Compiled %s to %s.o\n", path, path);
}

关于检查文件是否是c文件并编译它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com