转换c++;要进行bash,需要知道特定变量是否具有bash重要性 我把C++代码转换成BASH有几个原因,一个是我只知道在做这个转换的时候我所学的东西是什么!p>

转换c++;要进行bash,需要知道特定变量是否具有bash重要性 我把C++代码转换成BASH有几个原因,一个是我只知道在做这个转换的时候我所学的东西是什么!p>,bash,c++,Bash,C++,有一个变量(我们称之为“大小”)我不知道该如何理解,但变量名暗示了一些重要性,因此我害怕在没有完全理解的情况下继续前进。下面是一个简化的代码,它解释了变量的每个实例,包括文件周围没有的所有#include行(我假设这些行与包无关,因为我在包中的任何地方都找不到它们)。否#包含文件逐字提及此变量。。。这些代码都在40行代码和空行的范围内 for (i=0; blah; i++) { int value[3]; int size; ..... fscanf(inputfi

有一个变量(我们称之为“大小”)我不知道该如何理解,但变量名暗示了一些重要性,因此我害怕在没有完全理解的情况下继续前进。下面是一个简化的代码,它解释了变量的每个实例,包括文件周围没有的所有#include行(我假设这些行与包无关,因为我在包中的任何地方都找不到它们)。否#包含文件逐字提及此变量。。。这些代码都在40行代码和空行的范围内

for (i=0; blah; i++) {
   int value[3];
   int size;

   .....

   fscanf(inputfile_in, "%f, %f , %f\n", value, value[1], value[2], &size);
   for (j=0; blah; j++); {

      .....

      fprintf(outputfile_out, "%f, %f , %f\n", value, value[1], value[2], size);

      ......
   }
就这样。我理解值数组-逻辑上很简单&读取/写入的输入/输出文件行的格式是“[float#]、[float#]、[float#]、[float#]”

我被“大小”变量弄糊涂了。这听起来很重要,但我不知道在哪里使用它,也不知道为什么需要它

你知道这是什么意思吗?我应该如何从逻辑上解释它,从而为它所发生的事情提供一个bash等价物?或者它可能是错误代码?或者,即使它在字面上没有提到,在C++结构中,它可能在我遗漏的其他代码中有意义。
编辑:多个输入,即使它们模仿其他注释,也非常感谢。例如,如果“大小”是下面一个人建议的一个不相关/未使用的变量,那么了解多人是否同意将非常有帮助。我必须建立一个理由来解释我为什么和如何改变,并最终重新编写这个程序。=)

看看你所拥有的,你有一个浮点数组[3]
和一些整数
大小
。从您提供的信息中,除了输入文件中的值[3]后面的数字外,
size
的重要性没有任何描述。无论您是否需要它,从您的代码片段中都看不出来

您的代码片段还必须是两个独立的循环,而不是嵌套的循环,因为您可以在使用
i
循环读取索引值之前写入
j
索引值。这部分代码根本没有意义。(很大程度上取决于
blah
应该是什么)

如果文件每行只包含3个浮点和i int,那么您最好执行以下操作:

$ cp inputfilename outputfilename
如果
size
后面的每一行上都有更多的值,则相当于:

$ awk -F',' '{printf "%.2f, %.2f, %.2f, %d\n",  $1, $2, $3, $4}' input > output
对于您的转换,如果您仍然对发布的C代码的等效脚本形式感兴趣,它将类似于:

ifn="$1"    ## input & output file name
ofn="$2"

declare -i size
declare -a value

while IFS=$',\n' read -r value[0], value[1], value[2], size; do
    printf "%s, %s, %s, %d\n" ${value[@]} "$size" >> "$ofn"
done < "$ifn"
ifn=“$1”##输入和输出文件名
ofn=“$2”
声明-i尺寸
声明-一个值
而IFS=$,\n'读取-r值[0],值[1],值[2],大小;做
printf“%s,%s,%s,%d\n“${value[@]}”$size”>>“$ofn”
完成<“$ifn”

请注意,如果每次都要编写新的输出文件,则需要在使用输出文件之前截断该文件(例如,
:>“$ofn”
)。

根据格式掩码,您可以消除这两条语句的大小:

   fscanf(inputfile_in, "%f, %f , %f\n", value, value[1], value[2], &size);
   for (j=0; blah; j++); {

      .....

      fprintf(outputfile_out, "%f, %f , %f\n", value, value[1], value[2], size);
应该成为

   fscanf(inputfile_in, "%f, %f , %f\n", value, value[1], value[2]);
   for (j=0; blah; j++); {

      .....

      fprintf(outputfile_out, "%f, %f , %f\n", value, value[1], value[2]);
没有不良影响

fprintf
fscanf
都采用格式掩码,后跟varargs列表

int fscanf(文件*流,常量字符*格式,…)


因此,格式掩码之后每个参数的含义完全取决于格式掩码,并且由于只有3个格式说明符,
&size
size
可能是早期格式掩码的残余。这两个函数肯定都不使用它们。

格式与参数数量不匹配,并且显示的
fscanf
调用不会更新
size
(也不会在
fprintf
中使用)。也许你的实际程序是不同的。你确定那是一个工作C++程序吗? “它看起来像一只猫在键盘上。”托马斯·迪基,那么,根据你所说的,你认为这个大小变量可能没有真正的函数吗?这段代码的编写不是不可能的。请注意,此代码是我的程序中的逐字记录,而不是var名称和。。。。。行是对另一个输入文件的操作。从技术上讲,这些操作并不依赖于与此问题相关的输入文件。@Scott,简短的回答是肯定的-我已经运行了数百万次了。我从未见过这个脚本因为与用户无关的原因而失败/中断。我不认为作者是一个贸易程序员,这可以解释为什么他们的猫可能得到帮助=P很长的答案是我不完全确定,因为当我在一个循环中运行它大约一百万次,然后在一个循环中通过这个包中的后续脚本运行输出大约20K次时,我会得到一些错误。实际上,我转换脚本的原因之一是为了排除此脚本是源问题。。。