目录
问题描述:
用字符串常量初始化字符数组
用初始化列表初始化字符数组
对比:为作比较,讨论以下几种情况
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()求得的字符串长度以及用格式