串輸入輸出在程式語言中指的是字元串的輸入輸出,在不同的程式語言中需要藉助不同的庫函式。
基本介紹
- 中文名:串輸入輸出
- 外文名:String input and output
- 定義:字元串的輸入輸出函式
- 性質:一種函式
- 套用學科:計算機
- 套用範圍:計算機的程式語言中使用
字元串輸入
當讀入一個串時, 第一件要做的事情是分配一塊空間來存放串。這意味著申請足夠的存貯空間存放我們讀入的無論多長的串。最簡單的方法是在說明語句中包括明確的數組長度說明。一旦你已經為一個字元串申請了空間, 你就可以讀入這個字元串了。簡單介紹C語言和C++語言的輸入函式。
C語言字元串輸入函式
#include <stdio.h>int main(){ char str1[30], str2[30]; printf("Input str1: "); scanf("%s", str1); printf("Input str2: "); scanf("%s", str2); printf("str1: %s\nstr2: %s\n", str1, str2); return 0;}
Input str1: c.biancheng.netInput str2: Java Python C-Sharpstr1: c.biancheng.netstr2: Java
2.如果fgets()讀取到換行符,就會把它存到字元串里,而不是像gets() 那樣丟棄換行符。它還需要第三個參數來說明讀哪個檔案,從鍵盤上讀數據時,可以使用stdin作為該參數 如:fgets( name , Max ,stdin);
#include<stdio.h> #define MAX 81 int main(void) { char name[MAX]; char *ptr; printf("Please input your name.\n"); ptr = fgets(name, MAX, stdin); printf("name, %s\n", name); printf("ptr, %s\n", ptr); return 0; }
Please input your name. clef name, clef //注意這裡的換行符,因為fgets()函式沒有丟棄輸入的換行符 ptr, clef
2.scanf()使用2種方法決定輸入結束 :遇到第一個空格,制表符,換行符如果指定了欄位寬度,比如%10s,則scanf()就會讀入10個字元,或知道遇到第一個空白字元,二者最先滿足的那個終止輸入。
#include <stdio.h>int main(){ char str1[30], str2[30]; printf("Input str1: "); scanf("%s", str1); printf("Input str2: "); scanf("%s", str2); printf("str1: %s\nstr2: %s\n", str1, str2); return 0;}
Input str1: c.biancheng.netInput str2: Java Python C-Sharpstr1: c.biancheng.netstr2: Java
C++語言字元串輸入函式
#include<iostream> //標準輸入輸出流頭檔案 #include<string> //由於後面實例化String對象,因此這裡的頭檔案不能少 using namespace std; int main() { string str; char temp; cout<<"輸入字元串,按回車鍵結束輸入"<<endl; while((temp=cin.get())!='\n') { str +=temp; } const int LEN =str.length(); //str是String的一個對象,length是成員函式 char* dest = new char[LEN]; //根據輸入字元串的長度,創建字元數組 for(int i = 0;i<LEN;i++) //將字元串保存到字元數組中 { dest[i]=str[i]; cout<<dest[i]; } cout<<endl; delete dest; //此處銷毀new開闢的空間不能忘記 system("pause"); return 0; }
#include <iostream> using namespace std; int main() { char str[10]; cin.get(str, 10); cout << str << endl; cout<<strlen(str)<<endl; //如果輸入10字元,只會顯示9個 return 0; }
#include <iostream> using namespace std; void main () { char m[20]; cin.getline(m,5); cout<<m<<endl; }
#include <iostream> using namespace std; void main() { char cstr[200]; char bstr[200]; cin.getline(cstr,sizeof(bstr),'['); //我們以單個英文字母'X'作為終止標識符 cin.getline(bstr,sizeof(cstr),']'); cout<<"第一行是:"<<cstr<<endl; cout<<"第二行是:"<<bstr<<endl; system("pause"); }
字元串輸出
C語言字元串輸出函式
#include<stdio.h> #define DEF "I am a #defined string." int main(void) { char str1[80] = "An array was initialized to me."; const char * str2 = "A pointer was initialized to me."; puts("I'm an argument to puts()."); //直接用字元串做參數 puts(DEF); //用宏定義做參數 puts(str1); puts(str2); puts(&(str1[5])); //必須用括弧strl1[5],因為str1將會首先結合&,然後在[5]結合,將出錯 puts(str2+4); return 0; }
I'm an argument to puts(). I am a #defined string. An array was initialized to me. A pointer was initialized to me. ray was initialized to me. inter was initialized to me.
fputs()函式需要第二個參數來說明需要寫的檔案,可以使用stdout作為參數來進行輸出 stdout在stdio.h中定義了 ,與puts不同,fputs()並不為輸出自動添加換行符 。
char line[81]; while(fgets(line,81,stdin)) fputs(line,stdout);
#include <stdio.h>int main(){ int i; char str[] = "http://c.biancheng.net"; printf("%s\n", str); //通過變數輸出 printf("%s\n", "http://c.biancheng.net"); //直接輸出 return 0;}
http://c.biancheng.nethttp://c.biancheng.net
C++語言字元串輸出函式
#include <iostream>using namespace std;int main(){ /*定義字元串數組和指針變數*/ char s[20], *f; /*字元串數組變數賦值*/ strcpy(s, "Hello! C++"); /*字元串指針變數賦值*/ f="Thank you"; puts(s); puts(f); }
#include <cstdio>#include <conio.h>int main(void){ char ch = 0; printf("Input a string:"); while ((ch != '\r')) { ch = getch(); putch(ch); } return 0;}