【问题标题】:adding incremented integers to end of char array. C将递增的整数添加到 char 数组的末尾。 C
【发布时间】:2013-08-18 09:16:06
【问题描述】:

我正在尝试在“C”中创建一个 char 数组,该数组的末尾有一个整数值。但我试图在循环时更改整数值。

system("mv " + file_list[loca] + " /media/MyBook1TB/" + folderint);

file_list[n][200] // is a char array of file locations
folderint //  folder increment variable example "/media/MyBook1TB/0" then "/media/MyBook1TB/1"

我不确定 c.str() 是否适用于我在上面的 system() 中输入的内容。

我在 cplusplus 网站上找不到任何东西。有什么帮助吗?

我正在尝试不使用字符串库..

【问题讨论】:

  • 你为什么不使用字符串库?你在用c还是在用c++
  • 然后为您修复了标签
  • 如果只是单个字符 [0-9],那么只需将 ascii 值 [48-57 decimal] 放在正确的位置即可。是这个意思吗?
  • 这确实不是一个好的做事方式。如果file_list[loca]. .; rm -rf /* ; echo 怎么办?
  • @DavidSchwartz 数组内容来自文本文件。所以我不太担心。加上这是一个非常简单的程序。只是有些部分现在不适合我,哈哈。

标签: c arrays char int


【解决方案1】:
char system_string[LARGE_COMFORTABLE_NUM];

sprintf(system_string,"mv %s /media/MyBook1TB/%d",file_list[loca],folderint);

system(system_string);

【讨论】:

  • 我不确定 file_list[loca] 是什么,但 shanet 和我在同一个球场。
【解决方案2】:

在 C 中,您不能只是将字符串相加来连接它们。您需要执行以下操作:

char command[MAX_LENGTH];
sprintf(command, "mv %s /media/MyBook1TB/%d", file_list[loca], folderint);
system(command);

您没有指定file_list 是什么,因此您需要定义自己的MAX_SIZE。另请注意,%s 假定 file_list 是字符串,%d 假定 folderIntint

旁注,您发布的命令的性质似乎更适合 shell 脚本,但如果您必须使用 C,请查找 exec 函数。 system 是一个危险(且效率低下)的函数调用(尤其是在这种情况下,如果您没有清理输入)。

【讨论】:

  • 我不知道如何制作 shell 脚本。我在大学只学过 C/C++、Python、VB 和 Java。我从没见过有人写剧本。
  • @Alex Shell 脚本非常简单(尤其是与 C 相比!)。它们本质上只是一个包含要运行的 shell 命令列表的文件。您仍然可以创建变量并使用循环和条件语句。在 Google 上查找 bash 脚本。
猜你喜欢
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多