首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 標準庫字符串函數詳解:strupr — 字符串大寫轉換

     編輯:關於C語言

函數原型

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;
}

關鍵注意事項

  1. 不可修改字符串常量:char *s = "abc"; strupr(s); 會導致未定義行為(段錯誤)。必須使用字符數組 char s[] = "abc"; 或動態分配內存。
  2. 區域設置敏感:轉換結果取決於當前 LC_CTYPE 區域設置,多字節字符集(如中文)環境下行為可能不可預期。
  3. 非標準:跨平台代碼請避免使用,改用標準 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,確保可移植性與安全性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved