空字符串
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!