如何将argv [k]转换成另一个字符串?

时间:2016-07-02 14:26:12

标签: c string pointers argv

int main(int argc, char **argv){

   char Q[MAXCHAR];
   Q=argv[k+1];}

Q是一个数组,而argv [k + 1]是一个指针。 如何将argv [k + 1]的内容导入Q?

2 个答案:

答案 0 :(得分:0)

您可以使用snprintf

snprintf(Q, MAXCHAR, "%s", argv[k]);

(编辑:第一版推荐strncpy)。

答案 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