简体   繁体   中英

why the atoi function is not working?

The program stops working. Even if I put only one int. I tried many different ways but can't figure out what is wrong. I am trying to take input of integers separated by space. There can be any no of integers.

#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]);
    }
}

Here is the prototype of atoi you have to use a character array but you are sending a character only. 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);
}

Do the following:

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

though atoi() accepts only a string argument or u can say constant char pointer and str[i] is nothing but a pointer pointing at a single character of the character array. Therefore once we pass atoi(str[i]) , that means we are passing a character to the function, which will give an error. Therefore you must pass the address of that particular character from where you want to convert the substring into a number ie atoi(&str[i]).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM