2008年11月21日 星期五

Hello World!

希望可以將基礎打好,因此還是從頭來過!

底下是參考了良葛格的學習筆記,並稍微修改成自己較容易記得的寫法。

這應該是最簡短的寫法了。
# include <stdio.h>

int main() {
    
printf("Hello World!\n");
}



雖然我指定 name 為 char ,但仍可以用 %d 將它印出來,只是會變為 66('A' = 65, 'B' = 66)
#include <stdio.h>

int main(void) {    
    
int age;
    
char name = 'B';
    
    
printf("%d\t%d\n", age, name);
}



甚至可以這樣做都不會出錯 ... 所以是否只是宣告記憶體配置空間而已呢?
#include <stdio.h>

int main(void) {    
    
int age = 'A';
    
char name = 65;
    
    
printf("%d\t%c\n", age, name);
}



這也令我非常困惑!
#include <stdio.h>

int main(void) {
    
// 照理說是宣告一個大小為 5 的陣列?但似乎有些隱藏的涵義? 
    char str[5];
    
printf("輸入 a 或是 b,不然就無法寫入 str:");
    
    
// 正規表示法? 
    scanf("%[a-b]", str);
    
printf("輸入的字元為 %s\n", str);    
    
    
// 不把暫存器中的東西清除的話,下次遇到 scanf 就會直接把暫存器中的東西拿去用而跳過去了 ... 
    fflush(stdin);
    
    
// 如果覆寫失敗,那 str 就會維持此行之前的內容 
    printf("輸入 1 或是 2,不然就無法覆寫 str:");
    
scanf("%[1-2]", str);
    
printf("輸入的字元為 %s\n", str);
    
    
// 為什麼這行不會出錯?而且若是上頭的 scanf 輸入了超過 10 個字以上,第 11 個字還會被取代成 a! 
    str[10] = 'a';
    
    
printf("%s\n", str);
    
    
// 厲害的是 size 還是 5? 
    printf("%d\n", sizeof(str));
    
    
return 0;
}



這裡要特別注意換行符號!
#include <stdio.h>

int main(void) {
    
// 一個字元 c 
    char c;
    
    
// 輸入超過一個字元,會將剩下的字元放進暫存區中 ... 等待下次的 getchar 或是 scanf 
    printf("請輸入一個字元:");
    
c = getchar();
    
    
// 若輸入了 a 並按下 Enter, 暫存器中會進行這樣的動作
    // 暫存器的值 = 'a\n', 取出第一個字元放進 c 並進行清除
    // 所以 c 將會存放 'a',且暫存器中仍有 '\n' 
    
    
    
// 直接印出 c 
    putchar(c);
    
putchar('\n');
    
    
// 若第一次輸入時輸入了超過一個字元,則這邊會將暫存器中的值再取出一個並清除
    // 若第一次輸入只輸入一個字元,這邊則會抓到換行符號! 
    c = getchar();
    
putchar(c);
    
putchar('\n');
    
    
return 0;
}



身為 Tcler ,這東西真的讓我感到非常親切 ......
#include <stdio.h>

int main(void) {
    
char c;
    
char str[20];
    
    
// 會直接加上換行符號 
    puts("請輸入字串:");
    
    
// 輸入一行字串且去掉換行符號 
    gets(str);
    
puts("輸入的字串為:");
    
puts(str);
    
    
// 這邊可以測試的出來 gets 會確實的將輸入的東西完全從暫存器中移除
    // 不會殘留換行符號在內,而是取出之後才處理!
    puts("如果這邊有停止的話,則暫存器內已無字元!請隨意輸入字元:"); 
    
c = getchar();
    
    
return 0;
}



今天先告一段落 ...

沒有留言: