字符串常量定義時的換行問題
如果我們在一行代碼的行尾放置一個反斜杠,c語言編譯器會忽略行尾的換行符,而把下一行的內容也算作是本行的內容。這里反斜杠起到了續行的作用。
如果我們不使用反斜杠,當我們試圖初始化一個跨多行的字符串是,c語言編譯器就會發出警告。如下面的語句所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
但是我們在行尾使用反斜杠, 那么就可以吧字符串常量跨行書寫, 如下所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
如果我們不使用反斜杠,當我們試圖初始化一個跨多行的字符串是,c語言編譯器就會發出警告。如下面的語句所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
但是我們在行尾使用反斜杠, 那么就可以吧字符串常量跨行書寫, 如下所示:
char letters[] = {"abcdefghijklmnopqrstuvwxyz\
ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
從續行的開始輸入字符串,可以避免在整個字符串中加入多於的空格。綜上所述,上面的語句定義了一個字符數組letters,
並將其初始化為如下的初值:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
c語言中還有一種拆分字符串的方法,那就是將其寫個多個相鄰的字符串。這些字符串之間用0個或者多個空白、制作符以及換行符隔開。c語言編譯器會自動將這些字符串連接起來。因此,下面的表達式:"one" "two" "three" 實際上相當於 "onetwothree".
並將其初始化為如下的初值:"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
c語言中還有一種拆分字符串的方法,那就是將其寫個多個相鄰的字符串。這些字符串之間用0個或者多個空白、制作符以及換行符隔開。c語言編譯器會自動將這些字符串連接起來。因此,下面的表達式:"one" "two" "three" 實際上相當於 "onetwothree".
因此前面跨行的初始化語句也可以用下面的形式完成:
char letters[] = {"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
char letters[] = {"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"}
下面給出一個例子,下面的三條printf語句實際上都只接受了參數,
printf("Programing in c is fun\n"); //Programing in c is fun
printf("Programming in c" " is fun\n"); // Programing in c is fun
printf("Programming" " in c" " is fun"\n);//Programing in c is fun
需要明白的是:c語言字符串的這個功能是從shell中借鑒過來的,因此,對於shell命令行來說,書寫shell腳本時候,以下兩種命令執行結果是等效的:
root@3me:/etc# pwd /etc root@3me:/etc# pw\ > d /etc root@3me:/etc#
轉載:http://blog.csdn.net/pachonghanya/article/details/6972632