重置字符数组值

时间:2016-02-23 06:57:26

标签: c arrays string

我在全球范围内声明了以下内容

    char a[20] = " ";
    char b[20] = " ";
    char c[20] = " ";
    char d[20] = " ";

我需要在方法中将这些变量设置为NULL。所以我使用

void mymethod()
{
        a[10]=" ";
        b[10]=" ";
        c[10]=" ";
        d[10]=" ";
}

但变量仍然保留了旧的价值。我做错了什么?

3 个答案:

答案 0 :(得分:1)

char a[20] = "";

这是在声明期间初始化数组。

a[10] = "";

这实际上是为数组中的元素设置一个值。

尝试使用

memset(a,0,sizeof(a));

在函数中初始化数组。

答案 1 :(得分:0)

char a[20] = " ";
char b[20] = " ";
char c[20] = " ";
char d[20] = " ";

a, b, c, dconst,无法更改。

如果要将数组的元素设置为0(NULL),请使用memset

memset(a, 0, sizeof(a));

如果要将变量a设置为NULL,则应将a声明为指针。

char *a = " ";
a = NULL;

答案 2 :(得分:0)

char a[20] = " ";

此处您正在初始化名为char

a数组
a[10]=" ";

在这里,您将字符串文字{' ','\0'}分配给数组a中的第11个字符。这是未定义的行为。

  

我需要在方法中将这些变量设置为NULL。

首先,我知道这是挑剔,但它仍然很重要,c没有方法。 c有功能。

如果您只想将数组清零,可以这样做(假设您的char数组是全局的)

void clearString (char *string, int lenght)
{
    memset(string, '\0', lenght);
}

然后你可以这样打电话:

clearString(a,20);