如何将多个命令的输出或代码块存储到单个变量中。我需要将其写入变量,以便可以在多个地方使用。
以下是一个伪程序,其中包含一个代码块(请参见注释),其中包含两个 printf
语句,我需要将它们存储到单个变量中,以便以后使用
显示输出格式的示例代码
#include <stdio.h>
int main()
{
int c;
// code block start here
char buffer[128];
for (c = 1; c <= 10; c++)
{
printf("%d",c+2);
if(c%2){
printf("%d\n",c+2);
}
}
//code block ends here
// store the whole output of above code block into variable
//send the data on socket ---this is working ,but need the whole data into the variable
return 0;
}
上面的程序结果
-->./a.out
33
455
677
899
101111
12
我试图使用snprintf
将两个printf的输出存储到一个名为buffer
的变量中,但是它会覆盖最后一个printf的数据。
#include <stdio.h>
int main()
{
int c;
// code block start here
char buffer[128];
for (c = 1; c <= 10; c++)
{
// printf("%d",c+2);
snprintf(buffer, sizeof(buffer), "%d", c+2);
if(c%2){
// printf("%d\n",c+2);
snprintf(buffer, sizeof(buffer), "%d", c+2);
}
}
printf("buffer is %s\n",buffer);
//code block ends here
// store the whole output of above code block into variable
//send the data on socket ---this is working ,but need the whole data into the variable
return 0;
}
当前输出:
buffer is 12
所需的输出:
buffer is 33\n455\n677\n899\n101111\n12
答案 0 :(得分:2)
到目前为止,您每次都使用最新的snprintf
调用来覆盖缓冲区。
您需要考虑snprintf
返回的最后写入的字节数。
示例:
int numBytes = 0;
for (c = 1; c <= 10; c++)
{
numBytes += snprintf(buffer+numBytes, sizeof(buffer)-numBytes, "%d", c+2);
if (c%2) {
numBytes += snprintf(buffer+numBytes, sizeof(buffer)-numBets, "%d", c+2);
}
}