Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 通过'的参数1;atoi&x27;从不带强制转换的整数生成指针…;有人能帮我吗_C - Fatal编程技术网

C 通过'的参数1;atoi&x27;从不带强制转换的整数生成指针…;有人能帮我吗

C 通过'的参数1;atoi&x27;从不带强制转换的整数生成指针…;有人能帮我吗,c,C,atoi要求输入一个char*。您正在向它传递一个字符,这正是警告消息告诉您的。如果确定只需要文件中的单个字符,请将c的声明更改为char c[2]并添加c[1]='\0'行后c=fgetc(文件)看起来您正试图使用atoi解析单个数字。但是,由于atoi需要一个C字符串并接受一个const char*,因此不能向其传递一个普通的char。您需要向其传递一个正确终止的C字符串: warning: passing argument 1 of 'atoi' makes pointer from in

atoi
要求输入一个
char*
。您正在向它传递一个
字符
,这正是警告消息告诉您的。如果确定只需要文件中的单个字符,请将
c
的声明更改为
char c[2]并添加
c[1]='\0'行后
c=fgetc(文件)

看起来您正试图使用
atoi
解析单个数字。但是,由于
atoi
需要一个C字符串并接受一个
const char*
,因此不能向其传递一个普通的
char
。您需要向其传递一个正确终止的C字符串:

warning: passing argument 1 of 'atoi' makes pointer from integer without a cast
/usr/include/stdlib.h 147, expected const char* but argument of type char
但是,这并不是将数字解释为数值的最有效方法:通过从数字中减去
0
,可以更快地完成相同的操作:

char c[2] = {0};
c[0]=fgetc(file);
instruction_file[count] = atoi(c); // This will compile

如果要将数字字符(数字)转换为整数值,可以使用ASCII码偏移量:

char c;
...
instruction_file[count] = c - '0';
c-‘0’


atoi需要字符指针(字符串或字符数组),但通过将“c”作为参数传递给atoi,您传递的是整型值(c的ascii值为99),但函数atoi需要以null结尾的字符数组(字符串),正是一个地址,因为它接受指针变量作为其参数。

查看
atoi
的预期参数类型您还没有告诉我们
指令文件是什么。另外,您是从文本文件还是二进制文件读取数据?atoi的参数是地址,因此您可以使用--atoi(&c)@阿披实:这还不够
atoi
要求其参数指向以零结尾的字符串。仅仅传递单个
char
变量的地址是不正确的。@JohnBode:肯定是:-)。@user3386109 Righto:在点击提交之前需要多加注意。我想现在已经修复了。是的,好多了:)我删除了评论,因为没有人能看到编辑。虽然减法字符的概念不是很直观,但这是一种方法。“其他任何事情都只是浪费时间。”斯特凡我完全同意。我包含了
atoi
修复程序,以防OP在其程序的后续版本中希望切换到多位数。对于多位数,逐字读取是不明智的;-)但我明白你的意思。
char c;
...
instruction_file[count] = c - '0';
int main()
{

    char c = '1';

    int i = c - '0'; // ASCII code offset
}