字符串的字節數怎么算,linux 取文件字節數,如何在Linux上的C中獲取文件中的字符數(而不是字節數)

 2023-11-19 阅读 23 评论 0

摘要:我想獲取文件中的字符數.字符我的意思是“真正的”字符,而不是字節.假設我知道文件編碼.我嘗試使用mbstowcs()但它不起作用,因為它使用系統區域設置(或使用setlocale定義的系統區域設置).因為setlocale不是線程安全的,所以在調用mbstowcs()之前我不認為使用它是個好主意.即使它

我想獲取文件中的字符數.字符我的意思是“真正的”字符,而不是字節.假設我知道文件編碼.

我嘗試使用mbstowcs()但它不起作用,因為它使用系統區域設置(或使用setlocale定義的系統區域設置).因為setlocale不是線程安全的,所以在調用mbstowcs()之前我不認為使用它是個好主意.即使它是安全的,我也必須確定

我的程序不會在setlocale()的調用之間“跳轉”(信號等)(一次調用將其設置為文件的編碼,然后調用以恢復到前一次).

因此,舉一個例子,假設我們有一個使用俄語編碼(例如KOI8)編碼的文件ru.txt.所以,我想打開文件并獲取字符數,假設文件的編碼是KOI8.

如果mbstowcs()可以采用source_encoding參數,那可能很容易……

字符串的字節數怎么算、編輯:使用mbstowcs()的另一個問題是必須在系統上安裝與文件編碼對應的語言環境…

我建議使用iconv(3):

NAME

iconv - perform character set conversion

SYNOPSIS

#include

linux c編程,size_t iconv(iconv_t cd,

char **inbuf, size_t *inbytesleft,

char **outbuf, size_t *outbytesleft);

并轉換為utf32.對于每個轉換的字符,您將得到4字節輸出(對于BOM,加2).應該可以使用固定大小outbuf逐個轉換輸入,如果一個人仔細選擇outbytesleft(即4 * inbytesleft 2 :-).

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/182375.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息