程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> gets()/puts()函數語法 用法 例子

gets()/puts()函數語法 用法 例子

編輯:關於C語言
 

該例子說明幾個問題: 非格式化輸出函數puts()和非格式化輸入函數gets()

  1. puts()函數         原型:int puts(char *string);        功能:puts()函數用來向標准輸出設備(屏幕)寫字符串並換行。       調用格式:puts(p); 其中p 是指向字符串的指針(字符串數組名或字符串指針)       注意:puts()函數的作用與語句 printf("%s\n",s); 的作用相同。       說明:         (1) puts()函數只能輸出字符串, 不能輸出數值或進行格式變換。           可以將字符串直接寫入puts()函數中。如: puts("Hello world");         (2) puts() 輸出的每一個串都在新行符處換行。最後, 當 puts() 找到空字符時, 它將空字符換成一個新行符並且輸出。
      2. gets()函數       原型:char *gets(char *string);        功能:gets()函數用來從標准輸入設備(鍵盤)讀取字符串直到回車結束, 但回車符不屬於這個字符串。       調用格式:gets(p); 其中p 是指向字符串的指針(字符串數組名或字符串指針)。        注意:gets(s)函數與scanf("%s", &s)相似, 但不完全相同。           使用scanf("%s", &s)函數輸入字符串時存在一個問題, 就是如果輸入了空格會認為輸入字符串結束,           空格後的字符將作為下一個輸入項處理, 但gets() 函數將接收輸入的整個字符串直到回車為止。
  測試環境vc6.0 ********************************************************************/


 

#include <stdio.h>#include <string.h>
 int main(void){/*    static char str1[] = "An array example.";  static char str2[] = "A pointer example.";  puts("I'm an argument to puts().");  puts(str1);  puts(str2);  puts(&str1[4]);  puts(str2+4);*/
   char a[20] = {0};  char *p = a;   printf("What's your name?\n");   gets(a);                      // 等待輸入字符串直到回車結束  puts(a);                      // 將輸入的字符串輸出  puts("How old are you?");   gets(p);   puts(p); 
   return 0;}
/******************************************************************** I'm an argument to puts(). An array example. A pointer example. rray example. inter example. Press any key to continue ********************************************************************/
 
  /******************************************************************** 這個例子提醒我們括號中的字符串和字符數組名是指針。
  注意最後兩行: 指針 &str1[4] 指向的是 str1 數組的第五個元素, 這個元素存放字符 'r', 這就是 puts() 作為它的指針起始點的地方。
  相似的, str2+4 指向 str2 中存放 'i' 的內存單元, 並且打印輸出從這裡開始。
  puts 怎麼知道何時停止於何處呢? 這個函數是在空字符 \0 出現時停止的, 因此, 最好字符串中已有一個這樣的字符。 例如 int main() {   static char arry[] = {'H','I','!','!'};   puts(arry);
    return 0; } 則輸出 Hi!!燙燙燙燙燙燙燙燙燙燙燙燙dhaklhdwuhdaghdagdak... (後面都是亂碼) 原因:a在結尾處缺少一個空字符('\0'), 所以它不是一個串,這樣 puts() 就不知道 什麼時候停止輸出, 它將會把a 後面內存單元中的內容都打印出, 直到它在什麼地方碰到 了一個空字符為止。  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved