2010-05-19 5 views
2

Pour ce code:"déclaration implicite" avertissement

int i=0; char **mainp; 
for(i=0;i<2;++i) 
{ 
    mainp[i]=malloc(sizeof(char)*200); 
    if(!scanf("%[^#],#",mainp[i])) 
     break; 
    if(i<2) 
     scanf("%[^#],#",mainp[i]); 
} 

GCC émet les avertissements:

warning: implicit declaration of function ‘scanf’ 
warning: incompatible implicit declaration of built-in function ‘scanf’ 
warning: ‘mainp’ may be used uninitialized in this function 

Et je reçois une erreur de segmentation lors de l'exécution

entrée

: (P> Q) (Q> R), - R # -P sortie: (P> Q), (Q> R), - R (emplacement de empt)

je devrait me donner (P> Q), (Q> R), - R -P // Où dois-je fixer dans mon code tel qu'il me donne attendu // sortie

+0

double possible de [Pourquoi dois-je recevoir un avertissement à chaque fois que j'utilise malloc?] (http://stackoverflow.com/questions/1230386/why-do-i-get-a-warning-everytime-i-use-malloc) – sepp2k

Répondre

10

Problème # 1:

avertissement: « mainp » peut être utilisé non initialisée dans cette fonction

Vous devez allouer de la mémoire pour le tableau de tableaux premier.

char **mainp = malloc(sizeof(char*)*2); 

Problème n ° 2:

avertissement: déclaration implicite de la fonction 'scanf'
avertissement: déclaration implicite de la fonction intégrée 'scanf'

Vous besoin d'inclure stdio.h en haut de votre dossier:

#include <stdio.h> 

Problème n ° 3: (Non inclus dans vos avertissements compilant)

Rappelez-vous de libérer les deux membres du groupe attribués et aussi le tableau d'adresse de tableau.

1

gcc attend cette ligne au début de votre fichier:

#include <stdio.h> 

et une déclaration de mainp comme celui-ci:

char *mainp[2]; 
0

Vous ne devriez pas utiliser les fonctions sans les déclarer; vous avez utilisé scanf, mais à aucun moment de votre code, scanf n'a été déclaré. Comme il est une fonction de la bibliothèque standard, il est déclaré dans l'un des en-têtes standard, stdio.h, vous avez juste besoin d'inclure:

#include <stdio.h> 

answer Brian est bon pour l'autre partie

Questions connexes