我初始化了一个大小为4的字符数组 当我将任何字符输入到字符数组时
function getTotalSum(cell) {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var sum = 0;
for (var i = 0; i < sheets.length ; i++ ) {
var sheet = sheets[i];
var val = sheet.getRange(cell).getValue();
if (typeof(val) == 'number') {
sum += val;
}
}
return sum;
输出显示我
字符数组是
但后来我改变了一点
char a[4];
a[1]='z';
printf("The character array is %s\n", a);
输出显示我
数组的第一个字符是z
为什么?我如何使用我的字符数组,例如我是否希望使用strcmp()函数对它们进行比较。 请帮帮我......
答案 0 :(得分:2)
在第一段代码中,您只设置了一个数组元素。其他三个元素未初始化。因此,当您调用<section class="info">
<div class="container">
<!--Some Content-->
</div>
</section>
<section class="text">
<!--Some Content-->
<h1>How do I stop this green from overlapping the grey container?</h1>
</section>
并传入printf
时,它会读取那些未初始化的字节。这样做会调用undefined behavior,在这种情况下会显示为没有打印。
在这种特殊情况下可能发生的是数组的第一个元素,即索引为0的元素,可能为0.此值用于终止字符串,因此a
被视为空字符串
此外:
数组的第一个字符是z
不,不是。 C中的数组以索引0开头,而不是索引1。
如果要将字符串复制到数组中,请使用a
:
strcpy
答案 1 :(得分:1)
在此代码段中
char a[4];
a[0]='z';
a[1]='y';
printf("The character array is %s\n", a);
数组不包含字符串(以零字符结尾的字符序列)。但是,您尝试使用转换说明符%s
将其作为字符串输出。
相反,你应该写
printf("The character array is %*.*s\n", 2, 2, a);
在此代码段中
char a[4];
a[0]='z';
a[1]='y';
printf("The first character of the array is %c\n", a[0]);
printf("The second character of the array is %c\n", a[1]);
再次,数组不包含字符串。但是,您输出单独的字符。所以没有问题。
如果要在数组中存储字符串,则应将其添加为零字符。例如
char a[4];
a[0]='z';
a[1]='y';
a[2] = '\0';
printf("The character array is %s\n", a);
标准C字符串函数strcmp
处理字符串。因此,您将要使用此函数的数组应包含字符串。
Otherewise你可以使用另一个标准函数memcmp
。