我有一个带有字符数组的代码,如下所示:
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"
答案 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;
}