2016-12-10 6 views
2

Le programme cesse de fonctionner. Même si je ne mets qu'un int. J'ai essayé plusieurs façons, mais je n'arrive pas à comprendre ce qui ne va pas. J'essaie de prendre des entiers séparés par l'espace. Il peut y avoir n'importe quel nombre d'entiers.pourquoi la fonction atoi ne fonctionne pas?

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

essayer 'pour (j = 0; j BLUEPIXY

+0

Cela ne devrait même pas compiler sans' ', comme vous utilisez' strlen() '. – RoadRunner

+0

Cela ne fonctionne pas même si je n'utilise pas strlen –

Répondre

1

Voici le prototype d'atoi vous devez utiliser un tableau de caractères mais vous n'envoyez qu'un caractère. 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); 
} 
+0

[C bibliothèque] function - atoi()] (https://www.tutorialspoint.com/c_standard_library/c_function_atoi.htm) –

+0

alors que puis-je faire? –

+0

supprimer ces boucles et suivre la syntaxe ci-dessus – Anjaneyulu

1

Effectuez les opérations suivantes:

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