如何在strcmp()函数中使用字符数组

时间:2017-12-20 20:50:27

标签: c arrays character

我初始化了一个大小为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()函数对它们进行比较。 请帮帮我......

2 个答案:

答案 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