C語言怎么用printf輸出字符串
創(chuàng)新互聯是網站建設技術企業(yè),為成都企業(yè)提供專業(yè)的成都網站設計、做網站、成都外貿網站建設公司,網站設計,網站制作,網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制適合企業(yè)的網站。十多年品質,值得信賴!
printf函數的一般格式
printf(格式控制字符串,輸出表列);
以圖1所示為例。
圖1.
函數參數包括兩部分:
【1】格式控制字符串,是用雙引號括起來的字符串,也稱為轉換控制字符串,它指定輸出數據項的類型和格式。
它包括兩種信息:
●格式說明項:由%和格式字符組成,如%d,%f等。格式說明總是由%字符開始,到格式字符終止。它的作用是將輸出的數據項轉換為指定的格式輸出。輸出表列中的每個數據項對應一個格式說明項。
● 普通字符:即需要原樣輸出的字符,如逗號和換行符。
【2】輸出列表,是需要輸出的一些數據項,可以是表達式。
例如:假如a=3,b=4,那么printf("a=%db=%d",a,b);,輸出a=3b=4。其中兩個?“%d”是格式說明,表示輸出兩個整數,分別對應變量a,b?!癮=”,“b=”是普通字符,原樣輸出。
由于printf是函數,因此,格式控制字符串和輸出表列實際上都是函數的參數。printf函數的一般形式可以表示為:
printf(參數1,參數2,參數3,…,參數n)
printf函數的功能是將參數2到參數n按照參數1給定的格式輸出。
【3】格式字符?(構成格式說明項)
對于不同類型的數據項,應當使用不同的格式字符構成的格式說明項。常用的有以下幾種格式字符:(按不同類型數據,列出各種格式字符的常用用法)
【d格式符】用來輸出十進制整數。有以下幾種用法:
●?%d,按照數據的實際長度輸出。
●?%md,m指定輸出字段的寬度?(整數)。如果數據的位數小于m,則左端補以空格(右對齊);若大于m,則按照實際位數輸出。
●?%-md,m指定輸出字段的寬度?(整數)。如果數據的位數小于m,則右端補以空格?(左對齊);若大于m,則按照實際位數輸出。
●?%ld,輸出長整型數據,也可以指定寬度%mld。
【o格式符】以八進制形式輸出整數。注意:是將內存單元中的各位的值按八進制形式輸出,輸出的數據不帶符號,即將符號位也一起作為八進制的一部分輸出。
例如:
inta=-1;
printf("%d,%o,%x",a,a,a);
-1的原碼:1000,0000,0000,0001。
-1在內存中的補碼表示為:
1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff
輸出:-1,177777,ffff
【s格式符】用來輸出一個字符串。有以下幾種用法:
●?%s,輸出字符串。
●?%ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則左補空格?(右對齊)。
●?%-ms,輸出的字符串占m列,如果字符串長度大于m,則字符串全部輸出;若字符串長度小于m,則右補空格?(左對齊)。
●?%m.ns,輸出占m列,但只取字符串左端n個字符,左補空白?(右對齊)。
●?%-m.ns,輸出占m列,但只取字符串左端n個字符,右補空白?(左對齊)。
【 f 格式符】用來輸出實數?(包括單、雙精度,單雙精度格式符相同),以小數形式輸出。有以下幾種用法:
●?%f,不指定寬度,使整數部分全部輸出,并輸出6位小數。注意,并非全部數字都是有效數字,單精度實數的有效位數一般為7位?(雙精度16位)。
●?%m.nf,指定數據占m列,其中有n位小數。如果數值長度小于m,左端補空格(右對齊)。
●?%-m.nf,指定數據占m列,其中有n位小數。如果數值長度小于m,右端補空格(左對齊)。
【 e 格式符】以指數形式輸出實數。可用以下形式表示:
●?%e,不指定輸出數據所占的寬度和小數位數,由系統(tǒng)自動指定。如6位小數,指數占5位,-e占1位,指數符號占1位,指數占3位。數值按照規(guī)格化指數形式輸出?(小數點前必須有而且只有1位非0數字)。
在C語言中,輸入輸出字符串有以下兩種方式:
1 用scanf/printf輸入輸出。
scanf/printf是C語言的格式化輸入輸出函數,可以用于輸入輸出各種基礎類型,字符串(char*)也
其支持范圍內。
格式化字符為%s。
定義
char str[100];
輸入
scanf("%s",str);
輸出
printf("%s",str);
2 C語言還支持專門的字符串輸入輸出函數:gets/puts。
gets的作用為,讀入一行輸入,并將讀到的換行符替換為字符串結束符。
puts的作用為,將字符串單行輸出,即輸出字符串內容后,會自動在結尾增加換行。
定義
char str[100];
輸入
gets(str);
輸出
puts(str);
擴展資料:
起初,C語言沒有官方標準。1978年由美國電話電報公司(ATT)貝爾實驗室正式發(fā)表了C語言。布萊恩·柯林漢(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本書,名叫《The C Programming Language》。
這本書被 C語言開發(fā)者們稱為KR,很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為KR C。
KR C主要介紹了以下特色:
結構體(struct)類型
長整數(long int)類型
無符號整數(unsigned int)類型
把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。
即使在后來ANSI C標準被提出的許多年后,KR C仍然是許多編譯器的最 準要求,許多老舊的編譯器仍然運行KR C的標準。
1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
1983年,美國國家標準協會(ANSI)成立了一個委員會X3J11,來制定 C語言標準。
1989年,美國國家標準協會(ANSI)通過了C語言標準,被稱為ANSI X3.159-1989 "Programming Language C"。因為這個標準是1989年通過的,所以一般簡稱C89標準。有些人也簡稱ANSI C,因為這個標準是美國國家標準協會(ANSI)發(fā)布的。
1990年,國際標準化組織(ISO)和國際電工委員會(IEC)把C89標準定為C語言的國際標準,命名為ISO/IEC 9899:1990 - Programming languages -- C? 。
因為此標準是在1990年發(fā)布的,所以有些人把簡稱作C90標準。不過大多數人依然稱之為C89標準,因為此標準與ANSI C89標準完全等同。
1994年,國際標準化組織(ISO)和國際電工委員會(IEC)發(fā)布了C89標準修訂版,名叫ISO/IEC 9899:1990/Cor 1:1994,有些人簡稱為C94標準。
1995年,國際標準化組織(ISO)和國際電工委員會(IEC)再次發(fā)布了C89標準修訂版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity?[7]??,有些人簡稱為C95標準。
參考資料:百度百科-c語言
1,樓上說得正確
printf("輸出文本文件:");
// 這句后面增加:
while ((c=getchar())!='\n' c!=EOF );
//目的是清空輸入緩沖區(qū)。
2,加密算法是正確的
int op,i;
char c,outcome[30];
printf("請輸入操作要求:(0為加密,!0為解密):\n");
scanf("%d",op);
printf("請輸入文本文件:\n");
i=0;
printf("輸出文本文件:");
while ((c=getchar())!='\n' c!=EOF );
while((c=getchar())!='\n')
{
if(op)
outcome[i]=decrpt(c);
else
outcome[i]=encrpt(c);
printf("%c",outcome[i]);
i++;
}
printf("\n");
//while((c=getchar())!='\n')
char a[27] = "abcdefghijklmnopqrstuvwxyz";
char A[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for(int i = 0; i 27; i++)
{
printf("the old char is [%c]", a[i]);
printf("--- the encrpt char is [%c] \n", encrpt(a[i]));
}
for(int i = 0; i 27; i++)
{
printf("the old char is [%c]", A[i]);
printf("--- the encrpt char is [%c] \n", encrpt(A[i]));
}
printf("\n");
getchar();
C語言中實現函數返回字符串,首先要確定函數返回的字符串地址的來源,一般分為四種方式:
函數形參帶進來的地址
靜態(tài)局部變量地址
局部變量地址,必須在函數中用malloc()函數進行地址分配
采用全局變量地址
參考代碼:
void ?func1( char *s ) ?//通過形參返回字符串
{
strcpy( s, "hello");
}
char * func1_1( char *s ) //另一種寫法
{
strcpy( s, "hello");
return s ; //返回形參地址,方便程序調用
}
char * func2( void )
{
static char s[100]; //不能是非靜態(tài)變量,否則,子函數結束,局部變量被釋放,調用者得到一個無效的地址值。
strcpy( s, "hello");
return s ; //返回靜態(tài)局部變量地址,由調用者采用相應的指針變量接收返回值,得到字符串數據。
}
char * func3( void )
{
char *s ;
s=(char *)malloc( 100 );
strcpy( s, "hello");
return s ; //返回s值,該地址需要調用者去free()釋放。
}
//定義全局變量
char globle_buf[100];
void func4( void )
{
strcpy( globle_buf, "hello");
}
char * func4_1( char *s ) //另一種寫法
{
strcpy( globle_buf, "hello");
return globle_buf ; //返回全局變量地址,方便程序調用
}