char *strupr(char *s);
#include <string.h>
注意:strupr 並非 ANSI C / ISO C 標準函數,屬於 Microsoft / Borland 等編譯器的擴展函數。標準 C 建議自行實現或使用 toupper() 循環。
將字符串 s 中的所有小寫字母轉換為對應的大寫字母。非字母字符(數字、符號、空格、已是大寫的字母)保持不變。轉換原地進行,直接修改傳入的緩衝區。
返回指向字符串 s 的指針(即原指針),便於鏈式調用。
// strupr.c
#include <stdio.h>
#include <string.h>
// #include <conio.h> // clrscr, getchar 為 Turbo C 特有
int main() {
// 注意:字符串常量不可修改,必須用字符數組
char s[] = "Copywrite 1999-2000 GGV Technologies";
printf("轉換前: %s\n", s);
strupr(s);
printf("轉換後: %s\n", s); // COPYWRITE 1999-2000 GGV TECHNOLOGIES
// 可鏈式調用
// printf("%s", strupr(strlwr(s)));
getchar();
return 0;
}
char *s = "abc"; strupr(s); 會導致未定義行為(段錯誤)。必須使用字符數組 char s[] = "abc"; 或動態分配內存。LC_CTYPE 區域設置,多字節字符集(如中文)環境下行為可能不可預期。toupper() 循環:
#include <ctype.h>
void my_strupr(char *s) {
while (*s) { *s = toupper((unsigned char)*s); s++; }
}
strlwr(char *s):大寫轉小寫(同樣非標準)。toupper(int c) / tolower(int c):單字符轉換(標準 C,ctype.h)。strupr 是一個方便但非標準、有風險的字符串大寫轉換函數。現代 C 開發中,推薦使用標準 toupper() 循環或 C++ std::transform,確保可移植性與安全性。