编写fun:在形参ss所指字符串数组中,将所有串长超过k的字符串中后面的字符删除,只保留前面的k个字符。

问题:编写fun:在形参ss所指字符串数组中,将所有串长超过k的字符串中后面的字符删除,只保留前面的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。
答案:
void fun(char(*ss)[M],int k)
{ int i=0;
while (i<N) {
ss[i][k]='\0';i++; }
}
提问:为什么ss[i][k]='\0'使字符串长于k的字符全部删掉了?不是应该只删除ss[i][k]位置上的字符吗?

将串长超过k的字符串中后面的字符删除,不是删除整个字符串。
那么这个要求就是字符串截断,字符串以字符'\0'结尾,因此称为结束符,无论符后面是什么内容,编译器都会忽略,因此只要在索引k位置的字符设置为0即可,后面的字符就被截断了。

ss[i][k]='\0';就是将i行k列的字符设置为0,两个单引号包含起来的一个斜杠和一个0 代表值为0。多看看字符转义。
温馨提示:答案为网友推荐,仅供参考
相似回答