我是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
}
答案 0 :(得分:2)
在C中,您无法灵活地为字符串添加数字。如果要将数字附加到字符串,则首先必须使用itoa
函数将其转换为字符串。您可以找到有关该功能的在线文档。
以下是概述如何在C
中为字符串添加数字char[]
或sprintf
itoa
类型的新缓冲区中)
char[]
类型的新缓冲区。确保创建足够大小的文件,以便它可以保存完整的文件路径。strcat
附加两个字符串。您可以使用sprintf
。
fopen
答案 1 :(得分:1)
/**
* @var EnvironmentConfig
* @ORM\OneToOne(targetEntity="Environment\Entity\EnvironmentConfig", inversedBy="environment", cascade={"persist"})
*/
protected $config;
没有串联概念的字符串。因此,如果你想连接字符串,你必须使用这样的函数:
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_s
,strccat_s
。 (但这超出了你的问题的答案。)
答案 2 :(得分:1)
在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"
答案 3 :(得分:1)
您可能习惯于高级语言,您可以通过连接整数,浮点数,其他字符串等来“构建”字符串。这在C中不起作用。
正如评论@WeatherVane所指出的那样,sprintf
功能是适合这项工作的工具:
char buffer[PATH_MAX]; // assuming POSIX
sprintf(buffer, "/data/%d.txt", number);
fp = fopen(buffer, "wr");