C语言 查找文件夹中的特定文件并对其进行编辑

esyap4oy  于 2023-08-03  发布在  其他
关注(0)|答案(4)|浏览(110)

我对C语言真的很陌生,所以也许这个问题太简单了,或者不相关。但我没有找到这个问题的答案。
我有一个文件夹,文件名为:-90.txt,-89.txt,...,0.txt,1.txt,2.txt,...,90.txt.
我需要有一些功能,将接收号码(文件夹名称)作为参数,并打开该文件。

function editFile(number){
    fp=fopen("/data/" + number + ".txt", "wr");

    ...
    // do some other things
}

字符串

mdfafbf1

mdfafbf11#

在C语言中,您无法灵活地将数字添加到字符串中。如果你想把一个数字附加到一个字符串上,那么首先你必须用itoa函数把它转换成一个字符串。您可以找到有关该函数的联机文档。
下面是在C语言中如何给字符串加上一个数字的概要

  • 首先,使用itoasprintf将数字转换为字符串(将其存储在char[]类型的新缓冲区中
  • 然后创建一个char[]类型的新缓冲区。请确保创建的文件具有足够的大小,以便可以保存完整的文件路径。
  • 然后使用strcat追加这两个字符串。

除了以上所有的过程,您还可以使用sprintf

  • 然后将结果传递给fopen
8cdiaqws

8cdiaqws2#

C没有字符串连接的概念。所以如果你想连接字符串,你必须使用这样的函数:

function editFile(char* number)
{
    char pathName[MAX_PATH];
    strcpy(pathName, "/data/");
    strcat(pathName, number);
    strcat(pathName, ".txt");
    fp=fopen(pathName, "wr");

    ...
    // do some other things
}

字符串
您可以使用sprintf来缩短它。但是您应该添加安全检查,因为您有缓冲区溢出的风险。提示:strcpy_sstrccat_ssprintf_s。(但这超出了你的问题的答案。

yzckvree

yzckvree3#

在C语言中,你不能用这种方式构建字符串。使用sprintf在局部变量中创建文件名。

char filename[1024];
sprintf(filename, "/data/%d.txt", number); // assume that a signed value comes from `int`
fp = fopen(filename, "w+");                // replaced "wr"

字符串

fnatzsnv

fnatzsnv4#

你可能已经习惯了高级语言,在那里你可以通过连接整数、浮点数、其他字符串等来“构建”一个字符串。这在C语言里行不通。
snprintf函数是完成此任务的正确工具:

char buffer[PATH_MAX]; // assuming POSIX
snprintf(buffer, PATH_MAX, "/data/%d.txt", number);
fp = fopen(buffer, "wr");

字符串

相关问题