将字符串追加到char数组

时间:2019-12-03 01:38:15

标签: c

我有一个带有字符数组的代码,如下所示:

int main (int argc, char** argv)
{
   char arr[] = "%55u%10$n";
   return 0;
}

我希望通过用户输入的字符串(例如10)来动态设置argv[1]

以下正确的语法是:

char arr[] = "%55u%" argv[2] "$n"; // which would basically be "%55u%10$n" if argv[1] == "10"

2 个答案:

答案 0 :(得分:2)

您可以使用sprintf()

#include <stdio.h>

int main (int argc, char** argv)
{
   if (argc > 1)
   {
      char arr[20];
      sprintf(arr, "%%55u%%%.12s$n", argv[1]);
      ...
   }
   return 0;
}

或者,使用strcpy()strcat()(小心使用!):

#include <string.h>

int main (int argc, char** argv)
{
   if (argc > 1)
   {
      char arr[20];
      strcpy(arr, "%55u%");
      strcat(arr, argv[1]);
      // or: strcat_s(arr, sizeof(arr)-3, argv[1]);
      strcat(arr, "$n");
      ...
   }
   return 0;
}

答案 1 :(得分:1)

使用sprintf。确保转义文字%字符,并确保缓冲区足够大以容纳结果字符串。

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

int main (int argc, char **argv) {
    if (argc < 2) { return 0; }

    char arr[strlen(argv[1])+8];
    sprintf(arr, "%%55u%%%s$n", argv[1]);
    printf("%s\n", arr);

    return 0;
}