底下是參考了良葛格的學習筆記,並稍微修改成自己較容易記得的寫法。
這應該是最簡短的寫法了。
# include <stdio.h>
int main() {
printf("Hello World!\n");
}
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);
}
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);
}
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;
}
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;
}
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;
}
int main(void) {
char c;
char str[20];
// 會直接加上換行符號
puts("請輸入字串:");
// 輸入一行字串且去掉換行符號
gets(str);
puts("輸入的字串為:");
puts(str);
// 這邊可以測試的出來 gets 會確實的將輸入的東西完全從暫存器中移除
// 不會殘留換行符號在內,而是取出之後才處理!
puts("如果這邊有停止的話,則暫存器內已無字元!請隨意輸入字元:");
c = getchar();
return 0;
}
今天先告一段落 ...
沒有留言:
張貼留言