2016-07-13 13 views
0

Ich nahm Code von online http://www.codewithc.com/quiz-game-mini-project-in-c/ und ich bekam Fehler im Code, so dass ich den Code zu reduzieren. Ich erhalte einen Fehler [undefinierter Verweis auf: 'show_record'] Ich kann nicht lösen. Jede Hilfe oder Vorschläge zur Lösung dieses Problems wird sehr geschätzt. HierC Programmierfehler: [undefined Verweis auf: 'show_record']

ist ein Ausschnitt aus dem Code:

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

void show_record(); 
void reset_score(); 
void help(); 
void edit_score(float, char[]); 
int main() 
{ 
    int countr, r, r1, count, i, n; 
    float score; 
    char choice; 
    char playername[20]; 

    mainhome: 
    system("clear"); 
    printf("\n\t\t\t WELCOME "); 
    printf("\n\t\t\t to "); 
    printf("\n\t\t\t THE GAME "); 
    printf("\n\t\t > Press S to start the game"); 
    printf("\n\t\t > Press V to view the highest score "); 
    printf("\n\t\t > Press R to reset score"); 
    printf("\n\t\t > press H for help   "); 
    printf("\n\t\t > press Q to quit   "); 
    printf("\n\t\t________________________________________\n\n"); 

    choice = toupper(getchar()); 
    if (choice == 'V') 
    { 
     show_record(); 
     goto mainhome; 
    } 

    void show_record() 
    { 
     system("clear"); 
     char name[20]; 
     float scr; 
     FILE *f; 

     f = fopen("score.txt", "r"); 
     fscanf(f, "%s%f", &*name, &scr); 
     printf("\n\n\t\t*************************************************************"); 
     printf("\n\n\t\t %s has secured the Highest Score %0.2f", name, scr); 
     printf("\n\n\t\t*************************************************************"); 
     fclose(f); 
     getchar(); 
    } 

} 
+0

1. Die Definition von Funktionen in Funktionen ist GCC-Erweiterung und sollte nicht verwendet werden, es sei denn, es ist notwendig. 2. '& * name' kann einfach als' name' geschrieben werden – MikeCAT

+4

Ihre Einrückung ist schlecht, daher ist sie hier nicht sichtbar, aber Sie haben gerade versucht, eine Funktion 'show_record()' * innerhalb * einer anderen Funktion, 'main' zu deklarieren . Sie können das nicht in Standard C tun. (Ich habe gerade Ihren Einzug aktualisiert, um dies deutlicher zu machen). – lurker

+1

Verschieben Sie die letzte geschweifte Klammer vor die Zeile 'void show_record()'. Dies sollte das Problem beheben. – dasblinkenlight

Antwort

3

Sie haben implementiert show_record() innerhalb main, was nicht erlaubt ist. show_record() muss im globalen Gültigkeitsbereich implementiert werden, in dem es auch außerhalb von main deklariert wurde.