字符数组的自我结束标志
当我们输出字符串时,是否思考过,假如不知道字符数组的长度,我们应该怎么判断数组结束呢?
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>#include <string.h>
#include <stdio.h>
void main()
{
int inum = 0;
int pos = 0;
int a[10];
int i = 0;
char *c_keyword[] = {
"while",
"case",
"static",
"do",
};
//指针数组 自我结束能力
char* c_keyword1[] = {
"while",
"case",
"static",
"do",
'\0'
};
char* c_keyword2[] = {
"while",
"case",
"static",
"do",
0
};
char* c_keyword3[] = {
"while",
"case",
"static",
"do",
NULL//#define NULL ((void *)0)
};
"while",
"case",
"static",
"do",
"\0"//下面是错误的,会字符串"\0"不是转义字符,所以不能转义成0
};
//这里必须要有这个结束符,否则会越界,报错
for (i = 0; c_keyword[i] != NULL; i++)
{
printf("%s\n", c_keyword[i]);
}
printf("\n....\n");
for (i = 0; c_keyword1[i] != NULL; i++)
{
printf("%s\n", c_keyword1[i]);
}
printf("\n....\n");
for (i = 0; c_keyword2[i] != NULL; i++)
{
printf("%s\n", c_keyword2[i]);
}
printf("\n....\n");
for (i = 0; c_keyword3[i] != NULL; i++)
{
printf("%s\n", c_keyword3[i]);
}
printf("\n....\n");
for (i = 0; c_keyword4[i] != NULL; i++)
{
printf("%s\n", c_keyword4[i]);
}
system("pause");
}