Frage von einem Anfänger



  • Hallo allerseits,

    Bin neu hier und versuche mich in die Kunst der C Programmierung

    Ich habe einen C code geschrieben und weiß nicht wo der Fehler liegt.

    Ich benuthze Visual Studio 2010 C++ Express

    Hier der Code

    int main()
    {
    	/*Deklarationsteil Anfang*/
    	long int Nummer1, Nummer2, Meinergebnis;
     	char string_1[100];
     	char string_2[100];
    	/*Deklarationsteil Ende*/
    
    	putstring("Bitte 1. Nummer eingeben:\n");
    	getstring(string_1);
    	Nummer1 = stringtoi(string_1);
    
    	putstring("Bitte 2.Nummer eingeben:\n");
    	getstring(string_1);
    	Nummer2=stringtoi_1;
    
    	Meinergebnis = Nummer1 * Nummer2;
    
    	itostring(Meinergebnis, string_1);
    
    	copystring("Produkt beider Nummern lautet:\n",string_2);
    	appendstring(string_1, string_2);
    	putstring (string_2);
    
    	getchar();
    
    }
    

    Das ist der Fehler

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(10): warning C4013: 'putstring' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(11): warning C4013: 'getstring' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(12): warning C4013: 'stringtoi' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(16): error C2065: 'stringtoi_1': nichtdeklarierter Bezeichner

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(20):
    warning C4013: 'itostring' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(22): warning C4013: 'copystring' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(23): warning C4013: 'appendstring' undefiniert; Annahme: extern mit Rückgabetyp int

    1>c:\users\user\documents\visual studio 2010\projects\paul\paul.c(25): warning C4013: 'getchar' undefiniert; Annahme: extern mit Rückgabetyp int

    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Ich danke euch im voraus für eine Hilfe

    Schönen Abend wünsche ich euch



  • Wo hast du denn die Funktionen her, die du da benutzt?
    Der Compiler kennt die Funktionen nicht, die da angemeckert werden.

    Die Fehler passen nicht ganz zu dem Code, da putstring in Zeile 9 steht, aber beim Fehler steht etwas von Zeile 10.


  • Mod

    Die Fehlermeldungen sagen's schon: Alles nicht definiert. Wo hast du das her? Das sind alles irgendwelche Fantasienamen von Funktionen, die es gar nicht gibt. Nicht einmal mit Google bekomme ich heraus, wo du das her haben könntest.



  • Wie das Rätselraten bereits anmerken lässt, hast du noch nicht genug C gelernt.
    Schau dir die Standard-Bibliotheken mal an, was #include bedeutet und was Strings in C genau sind.



  • eien blöde Frage habe
    #include <string.h> dort ergänzt, aber leider keine erhalten.
    woran kann das das den liegen hier der Code nochmal

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
        long int nummer1, nummer2, ergebnis;
        char string_1[100];
        char string_2[100];
    
        putstring("Bitte 1. Zahl eingeben:%g", nummer1);
        getstring(string_1);
        nummer1=stringtoi(string_1);
    
        putstring("Bitte 2.Zahl eingeben:\n");
        getstring(string_1);
        zahl2=stringtoi(string_1);
    
        ergebnis=nummer1*nummer2;
    
        itostring(ergebnis, string_1);
    
        copystring("Produkt beider Zahlen ist:\n",string_2);
        appendstring(string_1,string_2);
        putstring(string_2);
        getchar();
    }
    

    Ich weiß was putstring, getstring, itostring usw. bedeutet verstehe den Fehler nicht.

    C:\Users\\ichkanns\Beispiel2.o:Beispiel2.c|| undefined reference to putstring'| C:\\Users\\\ichkanns\\Beispiel2.o:Beispiel2.c|| undefined reference togetstring'|
    C:\Users\\ichkanns\Beispiel2.o:Beispiel2.c|| undefined reference to stringtoi'| C:\\Users\\\ichkanns\\Beispiel2.o:Beispiel2.c|| undefined reference toputstring'|
    C:\Users\\ichkanns\Beispiel2.o:Beispiel2.c|| undefined reference to getstring'| C:\\Users\\\ichkanns\\Beispiel2.o:Beispiel2.c|| undefined reference tostringtoi'|
    C:\Users\\ichkanns\Beispiel2.o:Beispiel2.c|| undefined reference to itostring'| C:\\Users\\\ichkanns\\Beispiel2.o:Beispiel2.c|| undefined reference tocopystring'|
    C:\Users\\ichkanns\Beispiel2.o:Beispiel2.c|| undefined reference to appendstring'| C:\\Users\\\ichkanns\\Beispiel2.o:Beispiel2.c|| undefined reference toputstring'|
    ||=== Build failed: 10 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

    Es handelt sich bei dieser Programmierung um einen Microcontroller

    Ich programmiere über Code Blocks.

    was habe ich den hierbei vergessen?

    Ich wäre euch für eure Antworten sehr dankbar.

    Lg

    Ich wäre für paar Antworten dankbar



  • SeppJ schrieb:

    Die Fehlermeldungen sagen's schon: Alles nicht definiert. Wo hast du das her? Das sind alles irgendwelche Fantasienamen von Funktionen, die es gar nicht gibt. Nicht einmal mit Google bekomme ich heraus, wo du das her haben könntest.

    Praktisch - braucht man nur auf zitieren und absenden klicken.


  • Mod

    derrockytanztballet schrieb:

    Ich weiß was putstring, getstring, itostring usw. bedeutet verstehe den Fehler nicht.

    Wunderbar! Endlich jemand, der diese Funktionen kennt und uns erklären kann, was die machen (das können wir uns noch denken anhand des Namens, aber man kann ja nie sicher sein) und vor allem, wo sie herkommen. Letzteres weiß hier nämlich niemand (du hast den Thread doch gelesen, oder?) und daher war auch niemand in der Lage den fehlerhaften Code des Threaderstellers zu korrigieren. An einem fehlenden #include <string.h> liegt's nämlich nicht. Die Funktionen, die in der string.h deklariert werden, sind uns nämlich durchaus bekannt*.

    *: Außerdem sind die Fehler Linkerfehler. Wenn der Code compiliert, dann hast du anscheinend von irgendwo her passende Deklarationen. Vielleicht aus irgendwelchen Erweiterungen der Standardbibliothek bei deinem Compiler. Aber offensichtlich ist noch irgendeine zusätzliche Bibliothek nötig, gegen die gelinkt werden muss. Welche und wie, das steht sicherlich im Handbuch zu dieser Erweiterung. Da du bisher aber der erste bist, der irgendeine Kenntnis zu diesen Funktionen hat, bist du auch der bisher beste Kandidat, um die Eingangsfrage des Threaderstellers (und deine eigene) endlich zu beantworten.



  • Mit ein paar #define müsste es auch gehen.

    #define putstring printf
    #define getstring gets
    #define copystring(q,z) strcpy((z),(q))
    

    Es kann auch sein, dass diese Funktionen gleich über den UART vom µC gehen.
    Aber dann wird es in der Doku stehen.

    Darum:
    Frag den, von dem du die Funktionsnamen hast, die da angemeckert werden.
    Der muss sie ja irgendwo definiert haben.



  • Mittlerweile findet man bei Google was: 3 Ergebnisse

    Einmal das hier, dann ein ähnliches Problem und einen kompletten Code bei pastebin: http://pastebin.com/FNPVdf0g

    Da steht noch

    #include "lcd.h"                // "Einbinden der Funktionalit�t" f�r die Nutzung des HAPSIM-LCD
    #include "keypad.h"             // "Einbinden der Funktionalit�t" f�r die Nutzung des HAPSIM-Keypad
    #include "my_string.h"  // "Einbinden der Funktionalit�t" f�r die Nutzung der eigenen Stringoperation
    

    am Anfang.

    Wenn du diese Header nicht hast, wirst du so nicht weiter kommen.



  • DirkB schrieb:

    Wenn du diese Header nicht hast, wirst du so nicht weiter kommen.

    Wieso? Wenn man die offensichtlichen Fehler behebt, ist das doch ein praktisches Programm??

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define putstring printf
    #define getstring gets
    #define copystring(q,z) strcpy((z),(q))	 
    #define appendstring(z,q) strcat((z),(q))
    #define stringtoi(s) atoi((s))
    #define itostring(i, s) sprintf((s), "%d", (i))
    
    int main(void)
    {
        long int nummer1, nummer2, ergebnis;
        char string_1[100];
        char string_2[100];
    
        putstring("Bitte 1. Zahl eingeben: ");
        getstring(string_1);
        nummer1=stringtoi(string_1);
    
        putstring("Bitte 2.Zahl eingeben: ");
        getstring(string_1);
        nummer2=stringtoi(string_1);
    
        ergebnis=nummer1*nummer2;
    
        itostring(ergebnis, string_1);
    
        putstring("Produkt beider Zahlen ist: ");
        putstring(string_1);
        getchar();
    
    	return EXIT_SUCCESS;
    }
    

  • Mod

    DirkB schrieb:

    Wenn du diese Header nicht hast, wirst du so nicht weiter kommen.

    Der Code compiliert ja, die Header muss er folglich direkt oder indirekt haben (Meine Vermutung ist: Direkt, aber er verschweigt sie uns lieber 🙄 ), Das Problem ist, dass er nicht weiß gegen was oder wie er linken muss.


Anmelden zum Antworten