繁体   English   中英

在C中,如何从argv设置无符号字符数组

[英]In C, how to set an unsigned char array from argv

在下面的代码中,我希望通过程序参数提供myvar的值。

#include <stdio.h>

int main(int argc, const char **argv)
{
    const unsigned char myvar[] = "myvalue";
    return 0;
}

如何获取myvar以包含argv [1]中字符串的值?

如果您仅在阅读,则可以像这样复制argv[1]的地址:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, const char **argv) {
    const unsigned char *myvar = NULL;

    // Be sure to check argc first
    if (argc < 2) {
        fprintf(stderr, "Not enough arguments.\n");

        return EXIT_FAILURE;
    }

    myvar = (const unsigned char *)argv[1];

    printf("myvar = %s\n", myvar);
}

如果要更改myvar ,则应使用strncpy或类似方式复制字符串。

一个数组不能由指针或另一个数组初始化。 您只能使用初始化程序列表或(在char数组的char )字符串常量对其进行初始化。

您可以做什么用strcpy复制另一个字符串的内容。 并且由于您将使用此数组作为加密函数的参数,因此它可能需要为固定大小。

char myvar[8] = { 0 };        // initialize all values to 0
strncpy(myvar, argv[1], 8);   // copy the first 8 bytes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM