線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3361
推到 Plurk!
推到 Facebook!

關於字串、字元~與sprintf() 指令用法?

答題得分者是:rick060
noodlejay
一般會員


發表:8
回覆:18
積分:10
註冊:2011-08-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-08-29 23:48:45 IP:120.107.xxx.xxx 訂閱

我程式的底子不是很深厚,對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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-08-30 09:40:34 IP:60.250.xxx.xxx 未訂閱
 不知你手邊有沒有 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-08-30 14:44:54 IP:120.107.xxx.xxx 訂閱
我用的是Borland C++ Builder 6 程式設計經典
可是他好像沒有詳細說明這塊,=_=
系統時間:2017-10-24 6:27:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!