关于二维数组储存字符串的问题(C语言)

#include <stdio.h>
int main(void){ char str[][40] = { "To be or not to be", ",that is the question" }; int count[] = { 0, 0 };
for (int i = 0; i < 2;i++) while (str[i][count[i]]) count[i]++;
if (sizeof str[0] < count[0] + count[1] + 1) printf("\nYou can't put a quart into a pint pot."); else { count[1] = 0; while ((str[0][count[0]++] = str[1][count[1]++])); printf("\n%s\n", str[0]); } return 0;}
要把二维数组中str[1][count[1]]中的字符赋到str[0][count[0]]中,不过我搞不清楚
for (int i = 0; i < 2;i++) while (str[i][count[i]]) count[i]++;
这段语句的功能,请解释。

第1个回答  2013-12-26
计算两个字符串的长度
i=0时,while (str[0][count[0]) //
count[0]++; //计数字符串个数追问

可以具体一点吗?请说明一下过程

追答

while (str[0][count[0]) //注意str数组的列下标是count[0],它是逐步增1的,每次循环判断当前字符是否为串结束标记 count[0]++; //计数字符串个数

追问

count[0]++在计算字符串个数时,内存中式怎么工作的呢?

追答

count[0]是count数组的首元素,count[0]++使得该元素中存放的数据自增1。

while (str[0][count[0]) // count[0]++; //计数字符串个数
执行过程:
str[0][count[0] ] count[0]
第1次循环: T 1
2 o 2
3 空格 3
4 b 4
…… ……
18 串结束标志 循环结束

追问

意思是,如果count[0]中有40位可以存放,count[0]++会从count[0]一直数到cont[40],直到遇到 /0为止,然后开始i=1,再数count[1]中的数,执行同样的过程,是这样吗?

追答

count数组只有两个元素,分别是count[0]和count[1],分别用来存放数组str的两个字符串的长度。不是存放字符串的

本回答被提问者采纳
第2个回答  2013-12-26
for (int i = 0; i < 2; i++)
    while (str[i][count[i]])
        count[i]++;

其实跟这个是一个意思,只不过是数组算多个

char s[100];
while (s[i]) {
    count++;
}

追问

我想知道它的功能是什么?

相似回答