2013年7月6日 星期六

1. 從 Hello World 開始,簡簡單單的寫個c程式吧

前言

這是我的心得筆記,主要是記錄一些想法和觸動,可以與有在學習c language的朋友參考看看,覺得內容太淺的話,請一笑置之噢!


內文開始

在Windows系統裡,想用簡單的方法寫個 c程式,還要切換進command line 環境下執行和觀看結果,這真的是很不方便的一件小事;

為了偷懶,其實用Dev-C++可以很簡單的寫出c程式,辦法如下:

第一步,開一個 New Project ,選 Windows Appliction。

第二步,把main.cpp 程式裏的程式碼砍砍殺殺,留下開頭的幾行就可以了;接著再敲敲打打,補上二行,照樣寫個 " Hello World "來瞧瞧。

   MessageBox(NULL,"Hello World","AAA ... ",0);
   return 0;         


第三步,再compiler & Run 後,結果就跑出來了,很簡單吧!





如同c程式的進入點是main一般,Windows程式的進入點是WinMain;在Windows程式中可以使用大多數的c程式庫,記憶體管理和檔案I/O函式,會比使用Windows中的等效函式清晰方便的多。

關了一扇門,也會打開另一扇窗;雖然不能使用printf,但是可以使用sprintf、fprintf等等。

如果在沒有要建立自訂的應用程式視窗的情況下,對一般c程式的撰寫方式稍加修改後,先把它當作是Windows程式來執行,把輸出用MessageBox 或檔案方式來解決,也是一種快捷的變通作法。


先舉個1+2+...+10的例子,

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

char szBuffer[1024];

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    int i,temp=0;
    for(i=1;i<11;i++)
        temp=temp+i;
    sprintf(szBuffer,"\n  1+2+ ... +10 = %d  \n\n\n",temp);              
    MessageBox(NULL,TEXT(szBuffer),TEXT("AAA ... "),0);
    return 0;              
}





再舉個輸出檔案的例子,

#include <windows.h>
#include <stdio.h>

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
{
  FILE *pout;
  pout = fopen("temp.txt", "w" );
  if(!pout) {
            MessageBox(NULL,"Can not create a output file.","OOXX...",0);
            return -1;
            }            
  fprintf(pout,"TEST TEST TEST \n");
  fprintf(pout,"ABCD EFGH IJKL \n");
  fclose(pout);
  MessageBox(NULL,"The fprintf function is OK.", "OOOO...", 0);


  return 0;                
}
 




去看看這個程式的目錄下,也會多了個 "temp.txt" 檔案。 

簡單的小程式跟作業,用DevC++應該是夠用了;



暖身結束了噢,其實用DevC++ 和 WIN32 API可以寫出來不錯的程式,後面會再討論一些例子,還蠻好玩的。

~