2014-07-22 4 views
-2

Je suis novice dans l'écriture de code, alors expliquez brièvement vos réponses afin que je puisse (essayer de) suivre, merci! J'essaie d'entrer une chaîne, d'assigner la chaîne à un tableau de caractères, et d'extraire sélectivement une partie de la chaîne de caractères à retourner (ie entrer "character" et retourner "act"), et je n'arrive pas à comprendre pourquoi Je continue d'obtenir l'erreur "valeur indicée n'est ni tableau ni pointeur ni vecteur". Voici mon code:C, tableau char, erreur: la valeur indicée n'est ni tableau ni pointeur ni vecteur?

#include <stdio.h> 

    char source[81], result[81]; 
    int start, count; 

    char substring(); 

    int main(void) 
    { 
     substring ("character", 4, 3, result); 
     printf ("%s", result); //print result 
     return 0; 
    } 

    char substring (source, start, count, result) 
    { 
     int i = 0; 
     while (i <= (count-1)) 
     { 
      result[i] = source[((start-1)+i)]; //op chosen chars to result array 
      ++i; 
      if (i == count) 
      { 
       result[i] = '\n'; //when i = count, insert null at end of source array 
      } 
     } 
     return result; 
    } 

Quand j'attemp compiler, je reçois l'erreur: "

Compilation error time: 0 memory: 0 signal:0 
prog.c: In function ‘substring’: 
prog.c:20:13: error: subscripted value is neither array nor pointer nor vector 
     result[i] = source[((start-1)+i)]; //op chosen chars to result array 
      ^
prog.c:20:25: error: subscripted value is neither array nor pointer nor vector 
     result[i] = source[((start-1)+i)]; //op chosen chars to result array 
         ^
prog.c:24:14: error: subscripted value is neither array nor pointer nor vector 
     result[i] = '\n'; //when i = count, insert null at end of source array 
       ^" 
+0

et oui, je suis conscient que pour extraire 'act' je dois changer l'argument '4' en '5' ou corriger la condition de sélection du sous-ensemble du tableau – Blade122888

+0

Votre fonction prend quatre paramètres 'int'. vous voulez utiliser les variables globales, utilisez-les simplement au lieu d'avoir des paramètres pour eux. Une meilleure idée serait de se débarrasser des globals et de changer les paramètres pour avoir le bon type afin que vous puissiez transmettre les données. – chris

+0

La fonction 'char substring (source, start, count, result)' devrait être quelque chose comme 'char * substring (char * source, int start, int nombre, char * résultat) ' – francis

Répondre

2

Vous devriez déclarer des types explicites pour les arguments de substring():

char substring(char* source, int start, int count, char* result) 
+2

La forme sans types explicites est une forme obsolète de déclaration de fonction, dans laquelle les types par défaut 'int'. –

+0

En outre, vous devez * prototyper la fonction avant de l'appeler. Si seule la définition de la fonction est modifiée, le code est compilé mais son comportement n'est pas défini lors de l'exécution. –

Questions connexes