键入将字符数组转换为const char *

时间:2013-02-09 05:59:15

标签: c pointers const

我有一个字符数组 char输入[200];

截至目前的

输入字符串为“abc.txt”。

我有一个严格需要const char *的方法,如何将输入数组转换为const char *。

我尝试了它并传递它,但是在使用GDB时,我觉得因为输入中剩余的192个插槽都填充了垃圾(或者是空的),所以它不被函数接受。当我将字符串文字“a.txt”传递给它起作用的函数时。所以在这一点上我想从输入数组中提取填充的元素并将其转换为const char *。

我将输入作为用户的文件名,因此我使用了char数组来存储输入。

   int main()
    {
    char *name;

    char input[1024];
    strcpy(input, argv[1]);

    name = input;

    sys_open(input, "O_RDWR", 00700);


    }

2 个答案:

答案 0 :(得分:9)

您应该可以直接传递它。 char []可以转换为const char *,但反之亦然。

你看到gdb中所有垃圾的原因是因为数组没有预先初始化为包含任何东西,所以你只是看到之前的垃圾。只要您的字符串以空值终止,它应该没问题。

答案 1 :(得分:2)

阵列自然地衰减指针,因此不是问题。

"垃圾"的问题是因为那是阵列所在的内存中的内容。需要注意的重要事项是字符串由'\0'字符终止。

所以字符串"abc.txt"看起来像这样

'a', 'b', 'c', '.', 't', 'x', 't', '\0'

在此之后发生的事情并不重要,因为所有字符串函数都停留在'\0'

如果您使用的是包含字符串的数组,使用strlen获取长度非常重要,而不是sizeof,因为sizeof运算符给出了长度整个数组而不是包含的字符串。