C++控制台读取和输出函数
c中puts()函數
用來向標準輸出設備(屏幕)寫字符串并換行,其調用方式為,puts(s);其中s為字符串字符(字符串數組名或字符串指針)。
功 能: 送一字符串到流stdout中
用 法: int puts(char *string);
程序例: #include <stdio.h>
int main(void)
{ char string[] = "This is an example output string\n";
puts(string);
return 0; }
說明: puts 和 printf 的用法一樣,puts()函數的作用與語句“printf("%s\n",s);的作用相同。注意:puts在輸出字符串后回車符。 puts()函數只能輸出字符串,不能數值或進行格式變換。 可以將字符串直接寫入puts()函數中,輸出至屏幕。如:puts("Hello,Turo C2.0:");
putchar()函數,輸出單個字符,不自動換行
int main(void)
{ char a,b,c;
a='T',b='M',c='D';
putchar(a); putchar(b);putchar(c);putchar(\n);
putchar(a);putchar('\n');
putc? putchar
har(b);putchar('\n');
putchar(c);putchar('\n');
return 0; }
輸出結果為: TMD T M D
ctype.h文件中的處理字符串的函數
1 字符測試函數
1> 函數原型均為int isxxxx(int)
2> 參數為int, 任何實參均被提升成整型
3> 只能正確處理處于[0, 127]之間的值
2 字符映射函數
1> 函數原型為int toxxxx(int)
2> 對參數進行檢測, 若符合范圍則轉換, 否則不變
int tolower(int); 'A'~'Z' ==> 'a'~'z'
int toupper(int); 'a'~'z' ==> 'A'~'Z'
strtod strtod(將字符串轉換成浮點數)
相關函數 atoi,atol,strtod,strtol,strtoul 表頭文件 #include<stdlib.h>
定義函數 double strtod(const char *nptr,char **endptr);
函數說明 strtod()會掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負符號才開始做轉換,到出現非數字或字符串結束時('\0')才結束轉換,并將結果返回。若endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr傳回。參數nptr字符串可包含正負號、小數點或E(e)來表示指數部分。如123.456或123e-2。
返回值 返回轉換后的浮點型數。 附加說明 參考atof()。
范例 #include<stdlib.h> main()
{ char *endptr; char a[]="12345.6789";
char b[]="1234.567qwer"; char c[]="-232.23e4";
printf("a=%lf\n",strtod(a,NULL));
printf("b=%lf\n",strtod(b,&endptr));
printf("endptr=%s\n",endptr);
printf("c=%lf\n",strtod(c,NULL)); }
執行
a=12345.678900 b=1234.567000 endptr=qwer c=-2322300.000000 l
inux c function()中關于strtod的范例有誤
strchr
原型:extern char *strchr(const char *s,char c); const char *strchr(const char* _Str,int _Val) char *strchr(char* _Str,int _Ch) 頭文件:#include <string.h>
功能:查找字符串s中首次出現字符c的位置 說明:返回首次出現c的位置的指針,如果s中不存在c則返回NULL。
C語言函數strrchr
函數簡介
函數名稱: strrchr 函數原型:char *strrchr(char *str, char c); 所屬庫: string.h 函數功能:查找一個字符c在另一個字符串str中末次出現的位置(也就是從str的右側開始查找字符c首次出現的位置),并返回從字符串中的這個位置起,一直到字符串結束的所有字符。如果未能找到指定字符,那么函數將返回NULL。
strcspn 原型:size_t strcspn(const char *s1,const char *s2); 相關頭文件:#include <string.h> 功能:順序在字符串s1中搜尋與s2中字符的第一個相同字符,返回這個字符在S1中第一次出現的位置。
strpbrk 用法:#include <string.h> 功能:依次檢驗字符串s1中的字符,當被檢驗字符在字符串s2中也包含時,則停止檢驗,并返回該字符位置,空字符NULL不包括在內。 說明:返回s1中第一個滿足條件的字符的指針,如果沒有匹配字符則返回空指針NULL。 用途:在源字符串(s1)中找出最先含有搜索字符串(s2)中任一字符的位置并返回,若找不到則返回空指針。
strpbrk 用法:#include <string.h> 功能:依次檢驗字符串s1中的字符,當被檢驗字符在字符串s2中也包含時,則停止檢驗,并返回該字符位置,空字符NULL不包括在內。 說明:返回s1中第一個滿足條件的字符的指針,如果沒有匹配字符則返回空指針NULL。 用途:在源字符串(s1)中找出最先含有搜索字符串(s2)中任一字符的位置并返回,若找不到則返回空指針。
?
gets
【1】函數:gets(字符指針)
【2】頭文件:stdio.h(c中),c++不需包含此頭文件
【3】原型:char*gets(char*buffer);
【4】功能:從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結果存放在buffer指針所指向的字符數組中。換行符不作為讀取串的內容,讀取的換行符被轉換為null值,并由此來結束字符串。
【5】返回值:讀入成功,返回與參數buffer相同的指針;讀入過程中遇到EOF(End-of-File)或發生錯誤,返回NULL指針。所以在遇到返回值為NULL的情況,要用ferror或feof函數檢查是發生錯誤還是遇到EOF。
【6】注意:本函數可以無限讀取,不會判斷上限,所以程序員應該確保buffer的空間足夠大,以便在執行讀操作時不發生溢出。如果溢出,多出來的字符將被寫入到堆棧中,這就覆蓋了堆棧原先的內容,破壞一個或多個不相關變量的值,為了避免這種情況,我們可以用fgets()來替換gets()。這個事實導致gets函數只適用于玩具程序。在V7的手冊(1979年)中說明:為了向后兼容,gets刪除換行符,gets并不將換行符存入緩沖區。
【7】示例: C:#include "stdio.h" 這個頭文件包涵gets函數 void main() { char str1[5]; gets(str1); printf("%s\n",str1); } C++: #include<iostream> using namespace std; int main() { char str[100]; gets(str); cout<<str<<endl; return 0; } gets()函數用來從標準輸入設備(鍵盤)讀取字符串直到換行符結束,但換行符會被丟棄,然后在末尾添加'\0'字符。其調用格式為: gets(s); 其中s為字符串變量(字符串數組名或字符串指針)。 gets(s)函數與 scanf("%s",&s) 相似,但不完全相同,使用scanf("%s",&s) 函數輸入字符串時存在一個問題,就是如果輸入了空格會認為字符串結束,空格后的字符將作為下一個輸入項處理,但gets()函數將接收輸入的整個字符串直到遇到換行為止。 說明: gets(s) 函數中的變量s為一字符串或字符指針。如果為單個字符,編譯連接不會有錯誤,但運行后會出現”Null pointer asignment"的錯誤。
【8】寬字符版本,當使用unicode寬字符文本時,使用這個函數 _getws();
?
getchar
從stdio流中讀字符,相當于getc(stdin),它從標準輸入里讀取下一個字符。
?
stat結構體
stat 結構定義于:/usr/include/sys/stat.h 文件中 struct stat finfo; stat( sFileName, &finfo ); int size = finfo. st_size; struct stat { mode_t st_mode; //文件對應的模式,文件,目錄等 ino_t st_ino; //i-node節點號 dev_t st_dev; //設備號碼 dev_t st_rdev; //特殊設備號碼 nlink_t st_nlink; //文件的連接數 uid_t st_uid; //文件所有者 gid_t st_gid; //文件所有者對應的組 off_t st_size; //普通文件,對應的文件字節數 time_t st_atime; //文件最后被訪問的時間 time_t st_mtime; //文件內容最后被修改的時間 time_t st_ctime; //文件狀態(屬性)改變時間 blksize_t st_blksize; //文件內容對應的塊大小 blkcnt_t st_blocks; //文件內容對應的塊數量 };
?
函數名: stat() 功 能: 得到文件的信息,將其保存在buf結構中,buf的地址以參數形式傳遞給stat。 用 法: int _stat(const char *path,struct _stat *buffer)
?
perror ( )用 來 將 上 一 個 函 數 發 生 錯 誤 的 原 因 輸 出 到 標 準 設備 (stderr) 。參數 s 所指的字符串會先打印出,后面再加上錯誤原因字符串。此錯誤原因依照全局變量error 的值來決定要輸出的字符串。 在庫函數中有個error變量,每個error值對應著以字符串表示的錯誤類型。當你調用"某些"函數出錯時,該函數已經重新設置了error的值。perror函數只是將你輸入的一些信息和現在的error所對應的錯誤一起輸出。
文件操作:
#include <stdio.h>
int main(void)
{ FILE *fp ;
fp = fopen( "/root/noexitfile", "r+" );
if ( NULL == fp )
{ perror("/root/noexitfile");
}
return 0;
}
運行結果
[root@localhost io]# gcc perror.c
[root@localhost io]# ./a.out
/root/noexitfile: No such file or directory
?
?
總結
以上是生活随笔為你收集整理的C++控制台读取和输出函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用ImageMagick 的提示与技巧
- 下一篇: E431 笔记本电池问题 0190 C