我試圖找到一種計算整數位數的方法(例如 01 有 2 位數)我認為將整數轉換為字串然后使用 strlen() 會有所幫助,但它沒有。我怎樣才能實作我的目標?
int main()
{
int someInt = 01;
char str[12];
sprintf(str, "%d", someInt);
printf("%d",strlen(str));
}
uj5u.com熱心網友回復:
當 C 編譯器編譯您的程式時,您的 C 源代碼中存在的許多資訊都丟失了。永遠。
有關如何識別代碼、如何將其拆分為多行以及其他格式資訊的所有資訊都將丟失。變數的名稱丟失了。(準確地說,其中一些資訊會進入一個單獨的檔案,供除錯器在您單步執行程式時使用,但這是一個不同的主題)。
編譯器生成完全相同的代碼
int someInt = 1;
和
int someInt = 01;
和
int someInt = 001;
到您的程式執行時,它不再能夠判斷原始 C 檔案是否為上述 3 種形式中的任何一種(或任何其他等效形式)。
您可以做的是將您的號碼定義為字串開頭。如果您需要將其作為整數,則將其轉換為整數。
int main()
{
char[] numericString= "01";
int someInt;
someInt = (int)strtol(numericString, NULL, 10);
printf("The number is %d", someInt);
printf("Number of digits is %d", strlen(numericString));
}
uj5u.com熱心網友回復:
讓我們看看你的代碼。
int main()
{
int someInt = 01;
char str[12];
sprintf(str, "%d", someInt);
printf("%d",strlen(str));
}
正如在評論中指出,01是一個整數文字,你已經寫了... 1。讓我們還初始化字串中的每個字符'\0'以避免潛在的空終止符問題,并在程式末尾列印一個漂亮的換行符。
int main()
{
int someInt = 01;
char str[12] = {0};
sprintf(str, "%d", someInt);
printf("%d\n", strlen(str));
}
它仍然列印1,因為這是字串的長度,除非我們在說明符上使用修飾符%d。讓我們為該欄位指定寬度2with -。
至于建議,在這個答案的意見,正確的格式說明用于列印字串的長度是%zu作為結果strlen的型別為size_t,而不是int。
int main()
{
int someInt = 01;
char str[12] = {0};
sprintf(str, "-", someInt);
printf("%zu\n", strlen(str));
}
現在它列印2.
如果要存盤"01"in str,可以修改它以列印前導零以用d.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336467.html
上一篇:使用.htaccess轉發路徑
下一篇:矩陣求逆中的分割錯誤
