int main(int argc, char **argv){
char Q[MAXCHAR];
Q=argv[k+1];}
Q是一个数组,而argv [k + 1]是一个指针。 如何将argv [k + 1]的内容导入Q?
答案 0 :(得分:0)
答案 1 :(得分:0)
您无法直接指定Q = argv[k+1]
。对于数组(Q[MAXCHAR]
),arrayname(Q
)是基址。无法更改阵列的基址。
假设k = 0
,您可以使用以下任何一项将argv [1]数据转换为Q.
memmove(Q, argv[1], strlen(argv[1]) + 1);
或
snprintf(Q, strlen(argv[1]) + 1, "%s", argv[1]);
或
strncpy(Q, argv[1], strlen(argv[1]) + 1);
或
memcpy(Q, argv[1], strlen(argv[1]) + 1);
或
sprintf(Q, "%s", argv[1]);
或
strcpy(Q, argv[1]);
这是程序,使用memmove输出:
#include <stdio.h>
#include <string.h>
#define MAXCHAR 20
int main(int argc, char **argv)
{
if (argc < 2) {
puts("Not enough arguments");
return -1;
}
char Q[MAXCHAR] = {0};
memmove(Q, argv[1], strlen(argv[1]) + 1);
puts(Q);
return 0;
}
输出:
me@linux:~$ ./a.out stackexchange
stackexchange