【发布时间】:2020-08-21 15:58:00
【问题描述】:
当我尝试使用 atoi 函数将字符串转换为整数时,我没有得到任何输出。
调试时,在t=atoi(s[i]); 行显示分段错误错误
这是供您参考的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[100];
int i=0,t;
printf("Enter: ");
fgets(s,100,stdin);
while(s[i]!='\0')
{
if(s[i]>='1' && s[i]<='9')
{
t = atoi(s[i]);
printf("%d\n",t);
}
i++;
}
return 0;
}
【问题讨论】:
-
您将 character 传递给
atoi,而不是字符串地址。试试t = atoi(s + i);应该有一个编译器警告——不要忽略它们。 -
s[i]是一个字符。但atoi需要一个字符串。您可以使用atoi(&s[i])读取以i开头的数字。 -
注意:在读取带有
atoi的数字后,您应该跳过s[i]后面的所有数字,因为您刚刚处理了它们。除了i++,还有更多工作要做。 -
用
int x = atoi(s); printf("%d\n", x);替换整个while()循环 -
非常感谢@Weather Vane @ Paul Ogilvie @ chux - 恢复 Monica。这对我有用。