Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


undefined; assuming extern returning int

Postades av 2006-07-23 02:38:22 - Kristian Gerardsson, i forum c++, Tråden har 3 Kommentarer och lästs av 1883 personer

Skulle vilja få svar på vad mina varningar beror på: (programmet är inte komplett)

C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(34) : warning C4013: 'system' undefined; assuming extern returning int
C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(105) : warning C4013: 'tolower' undefined; assuming extern returning int
C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(130) : warning C4013: 'getch' undefined; assuming extern returning int
C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(140) : warning C4013: 'exit' undefined; assuming extern returning int
C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(208) : warning C4013: 'srand' undefined; assuming extern returning int
C:\Inetpub\wwwroot\_skola\C\hangman\hangman.c(209) : warning C4013: 'rand' undefined; assuming extern returning int

#include <stdio.h>
#include <string.h>
#include <time.h>

#define FILENAME "words.txt"		// name of file containing words
#define MAX_LEN 80					// maximum length of any guess word

/* prototypes */
void draw_hangman(int *wrong);
void draw_word(char *guess);
void draw_alphabet(char *guess);
void prompt(int *chances, char *guess);
void check_win(int *chances, int *correct);
void update_wrong_right(void);
void get_random_word(void);

char display[MAX_LEN];               // the string that is displayed
char display_alpha[27];              // the alphabet, guessed chars as underscores
char word[MAX_LEN];                  // current word to be guessed

/*********************************************************************/
int main()
{
	/* game variables */
	char guess;                          // the users current guess letter
	int chances;                         // how many chances we have left
	int correct;                         // the number of correct guesses
	int wrong;                           // the number of wrong guesses
	int blanks;                          // the number of hyphens in display
	int old_blanks;                      // the previous number of hyphens in display
	int len;                             // length of current word to be guessed
	int i;                               // loop index for various tasks

    system("CLS");
    get_random_word();
       
    // initialise display, for draw_word
    len = strlen(word);
    for (i = 0; i < len; i++)
	{
		display[i] = '-';
	}
    display[i] = '\0';
    
    // initialise display_alpha, for display_alphabet
    strcpy(display_alpha, "ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    
    // initalise various counts
    correct = 0;
    wrong = 0;
    old_blanks = len;
	chances = 0;
	blanks = 0;
	    
    while (1)
	{
        system("CLS");

        draw_hangman(&wrong);
        draw_word(&guess);
        draw_alphabet(&guess);
        prompt(&chances, &guess);
        check_win(&chances, &correct);
    }
    return(0);
}

/*********************************************************************/
void draw_hangman(int *wrong)
{

}

/*********************************************************************/
void draw_word(char *guess)
{
    int flag = 0;       // did we match a letter? 0 = no, 1 = yes
    int i;              // loop index

    // change correct letters from '-' to the chosen letter
    for (i = 0; word[i] != '\0'; i++)
	{
        if (word[i] == *guess)
		{
            display[i] = *guess;
        }
    }
    
    // print to the middle, padded with spaces
    for (i = 0; display[i] != '\0'; i++)
	{
		printf("%c ", display[i]);
	}
    printf("\n\n");
}

/*********************************************************************/
void draw_alphabet(char *guess)
{
    int i;

    // change letters used from the alphabet to '_'
    for (i = 0; display_alpha[i] != '\0'; i++)
	{
        if (tolower(display_alpha[i]) == *guess)
		{
            display_alpha[i] = '_';
        }    
    }
      
    for (i = 0; display_alpha[i] != '\0'; i++)
	{
		printf("%c ", display_alpha[i]);
	}
    printf("\n\n");
}

/*********************************************************************/
void check_win(int *chances, int *correct)
{
    char choice;
	int len = strlen(word);

    if (*correct == len)
	{
        printf("YOU WON");
        printf("Would you like to play again (Y/N)? ");
        choice = getch();
        
        switch (choice)
		{
            case 'y':          // fall through
            case 'Y':
                main();
                break;
            case 'n':          // fall through
            case 'N':
                exit(0);
                break;
            default:
                printf("Error: in check_win().\n");
        }
    }
	else
	{
        if (chances <= 0)
		{
            printf("YOU LOST\n");
            printf("The word was: %s\n", word);
            printf("Would you like to play again (Y/N)? ");
            choice = getch();
            
            switch (choice)
			{
                case 'y':          // fall through
                case 'Y':
                    main();
                    break;
                case 'n':          // fall through
                case 'N':
                    exit(0);
                    break;
                default:
                    printf("Error: in check_win().\n");
            }
        }
    }
}

/*********************************************************************/
void prompt(int *chances, char *guess)
{
    printf("Chances: %d\n\n", chances);
    printf("Guess letter: ");
    *guess = getch();
}


/*********************************************************************/
void get_random_word(void)
{
    int word_count = 0;     // number of words in file
    char buff[MAX_LEN];     // temp storage
    int i = 0;
    int x = 0;
    
    FILE *fp;
    
    fp = fopen(FILENAME, "r");
    
    if (fp == NULL)
	{
        fprintf(stderr, "Error: opening file %s\n", FILENAME);
        exit(1);
    }
    
    // count number of words in file
    while (fgets(buff, MAX_LEN, fp) != NULL)
	{
		word_count++;
	}
    fclose(fp);
    
    fp = fopen(FILENAME, "r");
    // generate random number
    srand(time(NULL));
    x = rand() % word_count;

    while (fgets(word, MAX_LEN, fp) != NULL)
	{
          i++;
          if (i == x) break;
    }

    word[strlen(word)-1] = '\0';

    fclose(fp);
}


Svara

Sv: undefined; assuming extern returning int

Postades av 2006-07-23 11:19:06 - Niklas Jansson

Det största felet är att du använder C-kod i ett C++-program. Använd referenser istället för pekare, vektorer istället för C-arrayer, de nya headerfilerna <cstdio> istället för <stdio.h> och namespaces istället för gamla headerfiler, och makron istället för konstanter.

Vidare använder du funktioner som inte är del av standarden (getch till exempel), något som inte är rekommenderat.

Anledningen till dina varningar är att funktionerna du använder inte är definierade. Anledningen till att de inte är definierade är att de inte ligger i någon av de headerfilerna du har inkluderat, utan i cstdlib (eller stdlib.h som den hette förut)


Svara

Sv:undefined; assuming extern returning int

Postades av 2006-07-23 11:36:30 - Kristian Gerardsson

Glömde säga det. Det är meningen att jag ska skriva i C, men det finns inget C-forum här på pellesoft. :)
Kan du skriva ett exempel på vad referenser är?


Svara

Sv: undefined; assuming extern returning int

Postades av 2006-07-23 15:42:00 - Niklas Jansson

Referenser är C++-varianter av pekare som är betydligt trevligare att arbeta med. Det finns dock inga referenser i C, så det är inte aktuellt i ditt fall.

Om du har en funktion som vill ändra en variabel skriver du kanske:

void AddOne (int *number)
{
  (*number)++;
}
//som anropas som:

int x=14;
AddOne(&x);


i C++ hade samma funktion istället sett ut som:

void AddOne (int &number)
{
  number++;
}
//som anropas som:

int x=14;
AddOne(x);


Som sagt, inte aktuellt för dig.
Fast egentligen är ju inte //-kommentarer C heller (eller tillkom de i C99?). Skit samma.

Problemet nu är då att du använder ickestandardfunktioner såsom getch. Undvik dem i största möjliga mån. Ditt problem är att du inte har inkluderat <stdlib.h>. Där finns förmodligen de flesta funktionerna du använder.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
5 741
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies