c语言二维数组的运用

#include<stdio.h>
#define MAX 100
#define LEN 80
main()
{
char text[MAX][LEN];
register int i,j,t;
for(t=0;t<MAX;t++)
{
printf("%d:",t);
【gets(text[t]);】这里是怎么回事?不是二维数组么?懂得解释一下;
if(!text[t][0])
break;
}
for(i=0;i<t;i++)
{
for(j=0;text[i][j];j++)
{
putchar(text[i][j]);
putchar('\n');
}
}
}

#include<stdio.h>
#define MAX 100
#define LEN 80
main()
{
char text[MAX][LEN];
register int i,j,t;
for(t=0;t<MAX;t++)
{
printf("%d:",t);
gets(text[t]); /* 由于 text 定义为二维数组, 所以该循环体的作用就是:循环从键盘输入 MAX-1 次字符串,并存入 text[t] 中,然后 t 依次递增 1 */
if(!text[t][0]) /* 该语句用于判断字符串是否到结尾?,如果到结尾了,即:text[t][0] = '\0',表示只输入了一个回车符,则退出循环 */
break;
}
for(i=0;i<t;i++)
{
for(j=0;text[i][j];j++)
{
putchar(text[i][j]); /* 显示 text 二维数组中的字符 */
putchar('\n');
}
}
}追问

红圈中的意思是text[t][0]不是‘\0’就执行break么

追答

但是表达式:if(!text[t][0]) 的意思是:假设 text[t][0] = '\0',则表达式可以写为:
if( ! 0 )
break ;
!0 的逻辑真值是 1,所以就又进一步变成了:
if( 1 )
break ;
string.h 是关于各种字符串头文件,例如:strcpy()(字符串拷贝)、strcmp()(字符串比较)、strstr( )(搜索子串) 函数等定义都在 string.h 头文件中定义。
而你说的 char text[MAX][LEN] 和 string.h 和 字符串头文件 string.h 完全是两码事。它只是定义了一个二维字符数组而已!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-22
char text[][] 是字符数组,text[i][j]是一个字符,tex[i]你可以理解为是一个string追问

什么叫“tex[i]你可以理解为是一个string”,string不是一个头文件么?

相似回答