假设我们在c中有一个字符数组,
char a[20];
我们可以访问索引20来像这样终止NULL。
a[20]='\0';
但在我的算法中。 (“这是char数组转换器的整数”)如果最后一个索引是小于char数组的大小,则必须使用终止NULL,例如,
如果我的int的大小是4(“1421”)那么我必须在索引0处放置'1',在索引1处放置'4',在索引2处放置'2'并且在索引3处放置'1'。
最后在索引4处终止NULL
index=4;
a[index]='\0';
修复相同代码的另一种方法,
if(index<20) (Will increase one condition)
a[index]='\0';
但我只是想知道是否可能......在索引20处终止NULL。
好的我认为每个人都非常感谢你们的帮助。
答案 0 :(得分:3)
数组char a[20]
在索引0到19中有20个字符的空间。写入a[20]
写入数组外部,会产生不可预测的后果。您最多只能包含20个字符,包括任何终止 NULL字符。如果您需要20个字符的空间加上终止NULL,则需要将数组声明为char a[21];
。另外,声明a[20]
不会在任何地方放置NULL。
答案 1 :(得分:1)
char a[20]
:20表示您可以拥有0-19
中的元素。并且假设您将仅使用最多19个。如果您填写最多20个,那么您将收到错误。
将其更改为:
a[20+1] => a[21]
现在您可以使用20来\0
。 a[20]='\0'
@AnkeshKushwah的代码
int main()
{
char arr[4]="hell";
printf("%c",arr[4]); // here you will see garabage.
printf("%c",arr[5]); // here is the terminating character. after 4.
char arr[]="hell";
printf("%c",arr[4]); // here you will see terminating character.Because hell will take
0-3 and 4 contains \0
getch();
}
答案 2 :(得分:0)
考虑使用全零来初始化char数组:char a[20] = { 0 };
这样,无论你写多少个字符(最多19个),你总是无效终止。