为什么atoi功能不起作用?

时间:2016-12-10 11:09:39

标签: c atoi

程序停止工作。 即使我只放了一个int。 我尝试了很多不同的方法,但无法弄清楚出了什么问题。 我试图输入由空格分隔的整数。 可能没有任何整数。

#include<stdio.h>
#include<stdlib.h>

int main(void) {
    int i,j=0;
    int b[100];
    char a[100];
    fgets(a,100,stdin);
    for(i=0;i<strlen(a);i++)
    {
        b[i] = atoi(a[j]);
        j=j+2;
    }
    for(i=0;i<strlen(b);i++)
    {
        printf("%d ",b[i]);
    }
}

3 个答案:

答案 0 :(得分:1)

这是atoi的原型,你必须使用一个字符数组但是你只发送一个字符。atoi(str[i])

int atoi(const char *str)


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
   int val;
   char str[20];

   strcpy(str, "98993489");
   val = atoi(str);
   printf("String value = %s, Int value = %d\n", str, val);


   return(0);
}

答案 1 :(得分:1)

执行以下操作:

for(i = 0; i < strlen(a); i += 2)
{
    b[j] = a[i];
    j++;
}

答案 2 :(得分:1)

虽然 atoi() 只接受一个字符串参数,或者你可以说常量字符指针和 str[i] 只不过是一个指向字符数组单个字符的指针。 因此,一旦我们传递了 atoi(str[i]) ,这意味着我们正在向函数传递一个字符,这将产生错误。 因此,您必须从要将子字符串转换为数字的位置传递该特定字符的地址,即 atoi(&str[i])。