Arrays 如何在字符数组中使用默认值?
我有一个最简单的问题:如何初始化C中的值? 我的变量是char[20]类型,它是在我的单元之外的某个地方声明的。改变类型是不可能的 现在我想给它一个默认值,比如说所有的空字符(或者空格,随便什么),但这根本不起作用。 我已经试过: 方法1。Arrays 如何在字符数组中使用默认值?,arrays,c,syntax-error,default-value,Arrays,C,Syntax Error,Default Value,我有一个最简单的问题:如何初始化C中的值? 我的变量是char[20]类型,它是在我的单元之外的某个地方声明的。改变类型是不可能的 现在我想给它一个默认值,比如说所有的空字符(或者空格,随便什么),但这根本不起作用。 我已经试过: 方法1。 host = ""; host = " "; host = ' '; host = {"", "", "", "", "", "", "", "", "", "", "", "",
host = "";
host = " ";
host = ' ';
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
=>无法从“常量字符[1]”转换为“字符[20]”
方法2.
host = "";
host = " ";
host = ' ';
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
=>无法从“常量字符[20]”转换为“字符[20]
方法3.
host = "";
host = " ";
host = ' ';
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
=>无法从“int”转换为“char[20]
方法4.
host = "";
host = " ";
host = ' ';
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
=>语法错误:“{”
我在这里感到绝望:C的发明者是如何以及为什么使得简单地向变量声明一个值变得如此困难的:-(
将用零填充它
host = "";
仅当它是char*而不是char[20]时才有效(如果正在执行函数,则只需将参数设置为char*)。
可以,但是,首先使用
{'character','character','character'
(将该字符替换为ASCII的任何字符,例如\0)
第二(这是这里的主要问题)你有一个,它不应该在那里(最后,所以删除这个)
初始化
的含义吗?通常,它只在定义的时间执行声明在我的单位之外的某个地方
,还是说已定义
主机
确实在其他地方声明了,定义它时,您可以使用
char host[20] = {0}; //to fill with 0
或
在以后的任何时候,如果您想将重新初始化为某个值,memset()
是一种方法。检查手册页。我认为您已经将主机变量声明为整数变量。如果您已将其声明为char变量
host = "";
host = " ";
这两个都是可能的,因为它需要相应的字符
位置
host='';
这是不可能的,因为在单引号中,我们只能给出字符。在这里,您必须提到数组位置,否则它将抛出错误。
主机[0]=''
host = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", };
这是不可能的,因为在这种情况下,它将采用相应的字符而不是字符串。您甚至尝试过用谷歌搜索“c字符数组初始化”吗?如何声明host
?是否对字符使用单引号?如果要填充数组,则必须在声明变量时进行填充。否则,必须更改每个单独的元素。显示源代码的相关部分char-host[20]={5,};
将把5
放在数组的第一个位置,并用零来完成其余部分。@axiac我的错!!donno我怎么会错过这个。对不起,谢谢你引起注意。用预期的代码更新。很好的技巧,但是如果host
是一个字符串(不是一个小整数数组),我建议[0…18]='5';
后接主机[19]='\0'
@AlterMann谢谢您扩大了我的回答范围。我刚刚使用了这个“memset”命令,它工作正常。谢谢!