gpt4 book ai didi

c - 当我将参数声明为 char 并在 htoi 中使用 char 参数时,为什么编译器会产生错误?

转载 作者:行者123 更新时间:2023-11-30 20:18:03 25 4
gpt4 key购买 nike

我正在编写一个程序,将十六进制值转换为数字值,为此我制作了整数函数 htoi(char s[ i]) 接受 char 数组。

我使用 getchar() 插入一个 char 数组,以允许用户输入字符,然后将其分配给我的代码中的数组,然后将所述数组用作 htoi 的参数,但是 编译器提示 htoi 使用带有指针的参数而不进行强制转换,并且需要 char。

我尝试将 char s[] 等数组更改为 int s[i],因为 char 只是一个较小的 int,对吧? 因此,当我将其更改为 int 时,编译器会提示 htoi{s[i]) (s[] 现在是 int)从整数生成指针而不进行强制转换。

所以,我意识到数组中的迭代器只不过是指向数组中元素的指针,好吧。太好了,所以我删除了 I 和。 。 。 它需要在“]”标记之前有一个表达式。

我已经用尽了我的工具包。

#include <stdio.h>
#define YES 1
#define NO 0
#define EXIT '~'

int htoi(int s[]);

int main(){
int i, c = 0;
int s[i];
for (i = 0; (c = getchar()!= EXIT); i++){
s[i] = c;
if(c == '\t' || c == '\n' || c == ' '){
htoi(s[]);
}else{
putchar(c);
}
}
}

int htoi(int s[]){
int isHexidecimal;
int hexdigit;
int n;
int i = 0;


if(s[i] == '0'){
i++;
if(s[i] == 'x' || s[i] == 'X')
i++;
}

isHexidecimal = YES;

while(isHexidecimal == YES){

if(s[i] >= '0' && s[i] <= 9){
hexdigit += s[i] - '0';
i++;

}else if(s[i] >= 'a' && s[i] <= 'f'){
hexdigit += s[i] - 'a' + 10;
i++;

}else if(s[i] >= 'A' && s[i] <= 'F'){
hexdigit += s[i] - 'A' + 10;
i++;

}else{

isHexidecimal = NO;

}if(isHexidecimal == YES) {

n = n * 16 + hexdigit;
}else {
n += 0;
}
}
return n;
}


我希望 main 方法运行分配给变量 c 的 getchar() 函数,然后将变量 c 分配给数组,然后将所述数组传递给 htoi。

htoi 将返回十六进制整数值,如果我没有输入有效的十六进制值,则返回“0”,或者返回十六进制值并由于循环未输入有效的十六进制值而终止。

最佳答案

htoi(s[]);

无效,没有任何意义。只需将指针传递给数组即可。

htoi(s);

int htoi(int s[]);

数组声明int s[]在函数参数列表中 int htoi( <here> )被完全解释为好像它是指向类型 int *s 的指针

关于c - 当我将参数声明为 char 并在 htoi 中使用 char 参数时,为什么编译器会产生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com