[英]converting char to int in c with sscanf
我正在學習 c 和 sscanf 讓我發瘋。 我的程序將 oktal 數轉換為十進制數:
void OktalToDecimal(char str[]) {
char character;
int digit;
int result = 0;
int i;
for (i = 0; i<strlen(str); i++){
character = str[strlen(str) - 1 - i]; //from right to left
printf("%c", character);
sscanf(character, "%i", digit); //converting char to int
//result += digit * pow(8,i);
}
//printf("decimal: %d \n", result);
}
int main () {
char oktal[256] = { "361 oktal" };
char digit[20];
char format[20];
sscanf (oktal, "%s %s", digit, format);
if (strcmp (format, "oktal") == 0) {
OktalToDecimal(digit);
}
return 0;
}
我的程序出現錯誤
sscanf(character, "%i", digit); //converting char to int
我不知道為什么。 有什么幫助嗎? 謝謝
我的程序出現錯誤
sscanf(character, "%i", digit); //converting char to int
在
sscanf(character, "%i", digit); //converting char to int
字符是一個字符,因此不是由sscanf所需的 null 字符終止的字符串
要將數字字符轉換為相應的值,只需從他身上刪除 '0'
digit = character - '0';
但是當你確定它是一個數字時這樣做,你可以使用 function isdigit ,在你的情況下你也可以檢查你有八進制,所以檢查字符在'0'和'7'之間
除此之外,我鼓勵您檢查sscanf (oktal, "%s %s", digit, format)返回 2 以確保用戶輸入您期望的兩個字符串
從你的言論
我有義務使用 sscanf
在這種情況下,您可以將字符聲明修改為:
char character[2];
在循環之前添加終止 null 字符以完成字符串:
character[1] = 0;
並在循環中替換
character = str[strlen(str) - 1 - i]; //from right to left printf("%c", character); sscanf(character, "%i", digit); //converting char to int
經過
character[0] = str[strlen(str) - 1 - i]; //from right to left
printf("%c", character[0]);
sscanf(character, "%i", &digit); //converting char to int
因為strlen(str)在循環中永遠不會改變,我鼓勵你將它的值保存在一個變量中並在循環中使用它。 請注意,您也可以讓i從strlen(str) - 1開始以簡化:
for (i = strlen(str) - 1; i >= 0; i--){ //from right to left character[0] = str[i]; ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.