c语言中字符串常量定义时的换行问题
2013-10-09 07:28
253 查看
c语言中字符串常量定义时的换行问题 如果我们在一行代码的行尾放置一个反斜杠,c语言编译器会忽略行尾的换行符,而把下一行的内容也算作是本行的内容.这里反斜杠起到了续行的作用.构建较长的字符串是续行的常见用途,还有一个作用是定义跨行的宏.
如果我们不使用反斜杠,当我们试图初始化为一个跨多行的字符串是,c语言编译器就会发出警告和错误.如下面的语句所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; 但是我们在行尾使用反斜杠,那么就可以把字符串常量跨行书写,如下所示:
c语言中还有一种拆分字符串的方法,那就是将其写个多个相邻的字符串.这些字符串之间用0个或者多个空白,制作符以及换行符隔开.c语言编译器会自动将这些字符串连接起来.因此,下面的表达式:"one" "two" "three" 实际上相当于 "onetwothree".因此前面跨行的初始化语句也可以用下面的形式完成:
char letters[] = {"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
如果我们不使用反斜杠,当我们试图初始化为一个跨多行的字符串是,c语言编译器就会发出警告和错误.如下面的语句所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ"}; 但是我们在行尾使用反斜杠,那么就可以把字符串常量跨行书写,如下所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz\ ABCDEFGHIJKLMNOPQRSTUVWXYZ"};从续行的开始输入字符串,可以避免在整个字符串中加入多余的空格.综上所述,上面的语句定义了一个字符数组letters,并将其初始化为如下的初值:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
c语言中还有一种拆分字符串的方法,那就是将其写个多个相邻的字符串.这些字符串之间用0个或者多个空白,制作符以及换行符隔开.c语言编译器会自动将这些字符串连接起来.因此,下面的表达式:"one" "two" "three" 实际上相当于 "onetwothree".因此前面跨行的初始化语句也可以用下面的形式完成:
char letters[] = {"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
相关文章推荐
- C语言switch case语句中定义变量问题
- C语言switch case语句中定义变量问题
- C语言中矩阵定义问题(续)
- c语言定义max赋值和函数求平均分的问题
- C语言switch case语句中定义变量问题
- 关于C语言中定义结构体问题
- 关于C语言中结构体定义的一个小问题
- 【疑问】c语言中变量的集中定义问题
- C语言switch case语句中定义变量问题
- 关于C语言中 字符串常量的问题
- C语言头文件中定义变量问题(转)
- 关于C语言数组的定义问题
- C语言中union的定义问题
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- 关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- C语言中矩阵定义问题
- C语言头文件定义全局变量问题
- 转载:关于C语言头文件的应用问题,主要还是关于全局变量的定义和声明问题
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- C语言:函数声明与定义的参数不一致问题,后果可能很严重哦!!!!!