關於字串、字元~與sprintf() 指令用法? |
答題得分者是:rick060
|
noodlejay
一般會員 發表:8 回覆:18 積分:10 註冊:2011-08-10 發送簡訊給我 |
我程式的底子不是很深厚,對C的基礎可說是少之又少 後來就開始學BCB..=_=" 正當我研究字串跟字元的時候遇到了sprintf這個指令 我查了很多解釋,最後還是有聽沒有懂 像下面的說明,希望有人可以跟我再簡單說明一點@@" ------------------------------------------------------------------ 功能: 函數sprintf()用來作格式化的輸出。 用法: 此函數調用方式為int sprintf(char *string,char *format,arg_list); 說明: 函數sprintf()的用法和printf()函數一樣,只是sprintf()函數給出第一個參數string(一般為字符數組), 然後再調用outtextxy()函數將串裡的字符顯示在屏幕上。arg_list為參數表,可有不定個數。 通常在繪圖方式下輸出數字時可調用sprintf()函數將所要輸出的格式送到第一個參數,然後顯示輸出。 如果沒有文本,圖形也派不太多的用場。但是圖形模式一旦設置,就無法進行常規文本顯示。 標號和文官信息只能用圖形文本顯示。圖形文本顯示與常規文本顯示不同。 例如,常規字符屏幕的位置其行列坐標表示已不再適用,這時單個字符可顯示在屏幕上的任何位置。 另外圖形文本顯示既可以水平顯示,也可以垂直顯示,字母大小也可以改變,同時可以提 供幾種不同的字型。 總之,常規文本顯示簡單容易;圖形文本顯示複雜不易操作。 所以,在C語言裡提 供了幾個函數來簡化操作,控制圖形文本顯示。 ------------------------------------------------------------------------------------------------------------------------------------------ sprintf(buff,"原字串:%s",str1); 這行裡面的%s是什麼意思? 還有後面的%c....好像還看過%d...... 弄得我暈頭轉向 [code cpp] void __fastcall TForm1::FormPaint(TObject *Sender) { int i,n,k; char *s; char buff[20]; char str1[]="Happy"; Canvas->TextOut(10,20," ===字串顛倒==="); //利用陣列名稱顯示字串 sprintf(buff,"原字串:%s",str1); Canvas->TextOutA(20,60,buff); //求自串長度 n=strlen(str1); Canvas->TextOut(20,85,"該字串長度=" IntToStr(n)); //利用指標顯示字串 s=str1;//將指標指向陣列第一個元素 for(k-0;k<=n-1;k ) { Canvas->TextOut(20 12*k,120,*(s k));//依序將指標的字元顯示出來 } //將字串顛倒 for(k=n-1,i=0;k>=0;k--,i ) { sprintf(buff,"%c",*(s k)) ; Canvas->TextOut(20 12*i,145,buff); } } //--------------------------------------------------------------------------- 請在此區域輸入程式碼 [/code] 編輯記錄
noodlejay 重新編輯於 2011-08-29 12:19:32, 註解 無‧
|
rick060
高階會員 發表:2 回覆:112 積分:217 註冊:2009-11-17 發送簡訊給我 |
不知你手邊有沒有 c 或 c++ 的書
裡面有沒有講解什麼是 printf 還是現在的書都只用 cout 不用 printf 那至少網路上的教學總有用吧? http://pubs.opengroup.org/onlinepubs/009695399/functions/printf.html 這邊的 printf 就等同於 sprintf(stdout,""); //等於把結果輸出到stdout(標準輸出裝置),一般來說就是印在螢幕上 以下幾例: printf("%d %d %d %d",1,2,3,4); //結果:1 2 3 4 printf("%s is not %s","Dog","Cat"); //結果 Dog is not Cat printf("3 2=%d",3 2);//結果:3 2=5 char *szBuffer[64 1]; sprintf(szBuffer,"This is it");//szBuffer 內容為"This is it" sprintf(szBuffer,"We are the %s","World"); //szBuffer 內容為"We are the World" 還是建議找本好書好好的從頭K一次吧 |
noodlejay
一般會員 發表:8 回覆:18 積分:10 註冊:2011-08-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |