如何在char数组中使用默认值?

时间:2014-12-03 11:02:17

标签: c syntax-error

我有最简单的问题:如何初始化C中的值? 我的变量是char [20]类型,它被声明在我单位之外的某个地方。不可能改变类型。

现在我想给它一个默认值,让我们说所有空字符(或空格,无论如何),但这根本不起作用。 我已经尝试过了:

方法1。

host = "";
  

=>无法从'const char [1]'转换为'char [20]'

方法2。

host = "                   ";
  

=>无法从'const char [20]'转换为'char [20]

方法3。

host = '                   ';
  

=>无法从'int'转换为'char [20]

方法4。

host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
  

=>语法错误:'{'

...

我在这里绝望了:C的发明者如何以及为什么如此简单地向变量声明一个值:-(?

4 个答案:

答案 0 :(得分:2)

memset(&host, 0, sizeof(host));

将用零填充它。

答案 1 :(得分:1)

  1. 你知道initialize的含义吗?通常,它仅在定义时间执行。
  2. declared somewhere outside of my unit,或者您的意思是defined
  3. 如果host在其他地方真的是declared,而在defining它,则可以使用

    char host[20] = {0};   //to fill with 0
    

    char host[20] = { [0 ... 19] = 5 };  //to fill with 5 , supported on gcc
    

    以后任何时候,如果您希望re-initialize达到某个值,memset()就可以了。查看手册页here

答案 2 :(得分:0)

host = "";

只有当它是char *而不是char [20]时才会工作(如果你正在做一个函数,只需要参数char *)。

host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };

没关系,但是,首先使用

{'字符','字符','字符' ...

(用ASCII的任何字符替换字符,例如\ 0)。

其次(这是这里的主要问题)你有一个,它应该是什么(最后,所以删除它)。

答案 3 :(得分:0)

我想你已经将主变量声明为整数变量。如果你已经声明为char变量, host =“”; host =“”;这两个是可能的。因为它会占用相应的字符 位置。

host ='';这是不可能的,因为在单引号中我们只能给出角色。在这里你必须提到数组位置,否则它会抛出错误。 主持人[0] ='';

host = {“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“”,“ ,“”,“”,“”,“”,“”,“};

这是不可能的,因为在这里它将使相应的字符不是字符串。