知方号

知方号

C语言:定长字符数组的输入和初始化问题

C语言:定长字符数组的输入和初始化问题

目录

问题描述:

用字符串常量初始化字符数组

用初始化列表初始化字符数组

对比:为作比较,讨论以下几种情况

1、字符串长度和初始化列表个数都小于字符数组长度,其他保持不变

2、再讨论另一种情形:在使用上述两种方法初始化时,定义时可以省略数组长度,系统会自动确定长度。

3、注意:在字符数组长度确定的情况下,如果用于初始化的初始化列表或者字符串常量长度大于字符数组长度,则会出现语法错误。

最后再讨论用scanf()进行格式化输入字符串的各种情形

1、对于键盘输入字符串长度小于字符数组长度的情况:

2、对于输入字符串的长度等于字符数组长度的情况:

3、对于键盘输入的字符串个数大于字符数组长度的情况

问题描述:

在定义字符数组用于存放字符串时遇到了一个小问题,即字符串长度和定义数组时需要指定的大小之间的关系。

比如有这样一个字符串:"I Love You!",一共是11个字符,但是我们定义字符数组Str[N]时,这个N应该是多少呢?

为什么这里会存在问题,看代码:

用字符串常量初始化字符数组 int main(int argc, char* argv[]) { //用长度相同的字符串对字符数组初始化char Str[11] = "I Love You!";int StrLen;StrLen = strlen(Str);for (int i = 0; i < 11; i++) {printf("第%d个字符是:%c ", i + 1, Str[i]);}printf(" ");printf("输出字符串为:%s ", Str);printf("该字符串长度为:%d ", StrLen);system("pause");return 0;}

可见,对于长度为11的一个字符串:"I Love You!",定义一个同样长度的字符数组Str[11]来存放它,并且直接用该字符串对数组进行初始化,其第i个元素、用strlen()求得的字符串长度以及用格式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。