如何正确格式化 atoi 函数?
How does one correctly format the atoi function?
我正在尝试熟悉 atoi 函数,因此我使用它编写了一个基本程序,但我遇到了一些问题:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
int main(void)
{
string s = get_string("String:");
int i = get_int("Integer:");
int a = atoi(s[1]);
int j = i + a;
printf("%i\n", j);
}
当我尝试编译它时,收到错误消息 "incompatible integer to pointer conversion passing 'char' to parameter of type 'const char *'; take the address with & [-Werror,-Wint-conversion]"
。这似乎表明它想要与 char
有关,但根据我的阅读,我的印象是 atoi 与字符串一起使用。如果有人能解释我哪里出错了,我将非常感激
您通过索引字符串传递 char
(假设字符串是 char*
的类型定义),它希望您传递 char*
。所以只需传递完整的字符串:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
int main(void)
{
string s = get_string("String:");
int i = get_int("Integer:");
int a = atoi(s);
int j = i + a;
printf("%i\n", j);
}
这是 atoi()
的语法
int atoi(const char *nptr);
注意参数是一个指针,而不是单个字符。
然而,发布的代码有:
int a = atoi(s[1]);
是单个字符,不是指针
建议:
int a = atoi( s );
此外,函数:atoi()
无法让程序知道何时发生错误。建议使用 strtol()
函数,该函数确实可以指示何时发生错误
我正在尝试熟悉 atoi 函数,因此我使用它编写了一个基本程序,但我遇到了一些问题:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
int main(void)
{
string s = get_string("String:");
int i = get_int("Integer:");
int a = atoi(s[1]);
int j = i + a;
printf("%i\n", j);
}
当我尝试编译它时,收到错误消息 "incompatible integer to pointer conversion passing 'char' to parameter of type 'const char *'; take the address with & [-Werror,-Wint-conversion]"
。这似乎表明它想要与 char
有关,但根据我的阅读,我的印象是 atoi 与字符串一起使用。如果有人能解释我哪里出错了,我将非常感激
您通过索引字符串传递 char
(假设字符串是 char*
的类型定义),它希望您传递 char*
。所以只需传递完整的字符串:
#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
int main(void)
{
string s = get_string("String:");
int i = get_int("Integer:");
int a = atoi(s);
int j = i + a;
printf("%i\n", j);
}
这是 atoi()
int atoi(const char *nptr);
注意参数是一个指针,而不是单个字符。
然而,发布的代码有:
int a = atoi(s[1]);
是单个字符,不是指针
建议:
int a = atoi( s );
此外,函数:atoi()
无法让程序知道何时发生错误。建议使用 strtol()
函数,该函数确实可以指示何时发生错误