空字符串

空字符串

1. 空字符串

字符串常量的書寫方式是用一對雙引號包圍一串字符,如下所示:

“Hello”
“\aWarning!\a”
“Line 1\nLine2”
“”

字符串常量 (不像字符常量) 可以是空的。即使是空字符串,依然存在作爲終止符的 NUL 宇節。

literal [ˈlɪtərəl]:adj. 文字的,逐字的,無誇張的
string [strɪŋ]:n. 線,弦,細繩,一串,一行

2. '\0'

//============================================================================
// Name        : '\0'
// Author      : Yongqiang Cheng
// Version     : Version 1.0.0
// Copyright   : Copyright (c) 2019 Yongqiang Cheng
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
	char *str_1 = "yong";
	char *str_2 = "qiang";
	char *str_3 = "";

	int len_str1 = 0;
	int len_str2 = 0;
	int len_str3 = 0;

	len_str1 = strlen(str_1);
	len_str2 = strlen(str_2);
	len_str3 = strlen(str_3);

	printf("len_str1 = %d\n", len_str1);
	printf("len_str2 = %d\n", len_str2);
	printf("len_str3 = %d\n", len_str3);

	printf("%s\n", str_1);
	printf("%s\n", str_2);
	printf("%s\n", str_3);

	if ('\0' == *str_3)
	{
		printf("yongqiang!\n");
	}

	return 0;
}

len_str1 = 4
len_str2 = 5
len_str3 = 0
yong
qiang

yongqiang!

3. #include <string.h>

//============================================================================
// Name        : '\0'
// Author      : Yongqiang Cheng
// Version     : Version 1.0.0
// Copyright   : Copyright (c) 2019 Yongqiang Cheng
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <stdio.h>

int main(int argc, char **argv)
{
	char *str_1 = "yong";
	char *str_2 = "qiang";
	char *str_3 = "";

	int len_str1 = 0;
	int len_str2 = 0;
	int len_str3 = 0;

	len_str1 = strlen(str_1);
	len_str2 = strlen(str_2);
	len_str3 = strlen(str_3);

	printf("len_str1 = %d\n", len_str1);
	printf("len_str2 = %d\n", len_str2);
	printf("len_str3 = %d\n", len_str3);

	printf("%s\n", str_1);
	printf("%s\n", str_2);
	printf("%s\n", str_3);

	if ('\0' == *str_3)
	{
		printf("yongqiang!\n");
	}

	return 0;
}

09:02:07 **** Build of configuration Debug for project yongqiang_example ****
make all 
Building file: ../src/yongqiang.c
Invoking: GCC C Compiler
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/yongqiang.d" -MT"src/yongqiang.o" -o "src/yongqiang.o" "../src/yongqiang.c"
../src/yongqiang.c: In function ‘main’:
../src/yongqiang.c:21:13: warning: implicit declaration of function ‘strlen’ [-Wimplicit-function-declaration]
  len_str1 = strlen(str_1);
             ^
../src/yongqiang.c:21:13: warning: incompatible implicit declaration of built-in function ‘strlen’
../src/yongqiang.c:21:13: note: include ‘<string.h>’ or provide a declaration of ‘strlen’
Finished building: ../src/yongqiang.c
 
Building target: yongqiang_example
Invoking: GCC C Linker
gcc  -o "yongqiang_example"  ./src/yongqiang.o   
Finished building target: yongqiang_example
 

09:02:08 Build Finished (took 515ms)
//============================================================================
// Name        : '\0'
// Author      : Yongqiang Cheng
// Version     : Version 1.0.0
// Copyright   : Copyright (c) 2019 Yongqiang Cheng
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
	char *str_1 = "yong";
	char *str_2 = "qiang";
	char *str_3 = "";

	int len_str1 = 0;
	int len_str2 = 0;
	int len_str3 = 0;

	len_str1 = strlen(str_1);
	len_str2 = strlen(str_2);
	len_str3 = strlen(str_3);

	printf("len_str1 = %d\n", len_str1);
	printf("len_str2 = %d\n", len_str2);
	printf("len_str3 = %d\n", len_str3);

	printf("%s\n", str_1);
	printf("%s\n", str_2);
	printf("%s\n", str_3);

	if ('\0' == *str_3)
	{
		printf("yongqiang!\n");
	}

	return 0;
}

len_str1 = 4
len_str2 = 5
len_str3 = 0
yong
qiang

yongqiang!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章