我正在学习C语言,但sscanf让我很头疼。我的程序将八进制数转换为十进制数:
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);
。 - Roberto CaboniOktalToDecimal
函数中,应该使用sscanf(character, "%i", &digit);
。变量digit
在这两个函数中有不同的类型。在main
函数中,它是一个数组,因此在传递给sscanf
时不需要使用&
。 - Weather Vanesscanf
,而不是拥有相同的名称。 - Weather Vanefor (i = strlen(str)-1; i >= 0; i--)
从右到左更简单地遍历字符串。 - Weather Vane