字串的輸入是很基礎的問題,不過其中的陷阱也不少。最關鍵的規避陷阱的方法就是心裡清楚輸入緩衝(stdio)裡還有什麼?
以下是十分常見的**之一,其中scanf("%c", &ch);也經常用getchar(&ch);來寫,
它們是一樣的。它們有乙個優秀之處是,所有的符號,甚至eof都能獲取並返回。
while(ch != '\n')
如果需要跳過所有的空格符號,就在%c之前加上『 』(空格)就好了。
while(ch != '#')
其中需要值得注意的有一點,此時再也無法使用'\n'作為結束接收的界定符號,
因為'\n'會被scanf函式跳過,因而無法返回乙個ch = '\n'。
在下面的**裡,我將'#'作為接收的結束界定符號,但是,這樣還是會有乙個問題!
因為檔案是按照行訪問的,所以scanf函式被設計成遇到回車'\n'才執行完。
因而你在輸入乙個串之後不免要按回車,例如你輸入「i am a dog.#」之後不免要按下回車結束。
正因為如此,當上述**執行到ch = '#'為真而跳出迴圈的時候,在輸入緩衝裡還留著乙個'\n'。
下面貼出乙個綜合性質的例子。
#include
#include
int main()
fflush(stdin) ;
printf("\n-----輸入以回車結尾-------\n") ;
while(ch != '\n') //如果注釋了fflush,從上面會留下乙個回車至此才被處理
printf("-----輸入帶空格串-------\n") ;
char str[100] ;
gets(str);//允許輸入帶空格串
puts(str);
printf("-----輸入帶空格串(淫技)-------\n") ;
scanf("%[^\n]",str);//允許輸入帶空格串
puts(str);
if(getchar() == '\n') puts("that is a '\\n' stay here.");
printf("-----輸入串不允許帶空格-------\n") ;
while(1)
return
0;}
下面介紹幾個輸入一行字串到buffer的方法,其中的優劣都寫在注釋裡了。
#include
//3個行輸入方案
int readline(char
str, int n)//周立功新書《程式設計與資料結構》的例子
str[i] = '\0';
return0;}
int main(int argc, char *argv)
return
0 ;}
一些字串函式
1.right location,somenumber left location,somenumber select right location,2 from my contacts 返回location列中所有右數兩個字元 select left location,2 from my cont...
字串的一些知識
1.string轉換成整數 string a 123 integer.parseint a throws numberformatexception integer.valueof a 呼叫parseint 丟擲異常同上 integer.valueof 8 56 而不是預想的8 可以用 8 0 2....
關於字串的一些。。。
首先呼叫這些函式需要使用標頭檔案include 1 des src abcd xyz abcdxyz char mystrcat char des,const char src 字串連線 2 字串比較 0,0,0 int mystrcmp const char str1,const char str...