gpt4 book ai didi

c - 在 for 循环中更新字符串,用于传递给系统

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:24 24 4
gpt4 key购买 nike

我在 Mac OSX 上工作并在终端中使用 bash。我正在用 C 编程,但在 for 循环中使用 system() 时遇到问题。我意识到我正在尝试做的事情可以通过 shell 脚本来完成,但我正在尝试并行化该过程,目前我只知道如何使用 C 中的 openmp 编程来实现它。

一般的想法是调用可执行文件 ./program,该程序具有三个输入:一个整数、一个字符串和一个 double 。我想用各种输入调用程序 100 次。目前,我正在尝试弄清楚如何将字符串传递给由 for 循环更新的 system()。我应该注意到,用于输入的(“子”)字符串也在更新以从不同的文件夹中获取数据(格式为:folder0000、folder0001 等)!

我的尝试是这样的:

#include <stdio.h>
#include <string.h>

int main(){

int spot;
double X;
char command[50];

#pragma omp parallel for private(command, path)
for(X=0, spot=0; spot<100; X+=0.005, spot++){
char path[50];
strcpy(path, "/home/folder%04d", spot);
strcpy(command, "./program %d %s %lf", 50, path, X);
system(command);
}

return 0;
}

如果您知道 strcpy 的工作原理(我并不真正知道),我得到的一个错误是显而易见的,那就是我向它传递了太多参数。它只喜欢取 2:strcpy(string 1, string 2)。在理解 strcpy 之前,我受到启发,通过模仿如何 printf double、整数等来尝试这个。

这是我可以完成我想做的事情的其他方式吗?感谢你们提供的任何帮助。

最佳答案

看起来你在找sprintf(3) :

sprintf(path, "/home/folder%04d", spot);
sprintf(command, "./program %d %s %lf", 50, path, X);

关于c - 在 for 循环中更新字符串,用于传递给系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16845348/

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