Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Probleme beim Kopieren von Quelltext in den vi (vim)

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.01.2003
    Beiträge
    12

    Probleme beim Kopieren von Quelltext in den vi (vim)

    Hi,

    Ich glaube irgendetwas mache ich bei der Bedienung des vi-Editors falsch.
    Nach kompilieren des mit vi abgespeicherten Textes habe ich folgende Fehlermeldung erhalten:

    Test.c:7: stray '\240' in program
    Test.c: In function `main':
    Test.c:8: warning: return type of `main' is not `int'
    Und ich erhalte kein ausführbares Programm. Außerdem steht nach dem Kopieren in den vim
    plötzlich ein | vor dem void main(void) das im Original gar nicht vorhanden ist.

    Die 1.Zeile der Fehlerrmeldung erhalte ich nicht, wenn ich den gleichen Text mit Kedit abspeichere.
    Daraufhin kann ich das Programm mit ./Test.c ausführen.


    Ich wollte unten stehenden Quelltext in den vim kopieren. (Aus einer HTML-Datei und aus einer Textdatei von Kedit.) Beim Kompileren des selben Textes, der vorher aus einem ganz normalen Texteditor Kedit abgespeichert wurde, gab es keine Probleme. Nur bei
    vim. Schon beim Kopieren mit der Maus in die Zwischenablage und von der Zwischenablage in
    den vim geht oft schon der Anfang des Textes verloren.

    Nach Vervollständigung des Textes erhalte ich manchnmal 20 Fehlermeldungen beim Kompilieren.
    Beim Kopieren aus einer HTML-Seite wird der Text vollständig in den vim-Editor kopiert,
    das Kompilieren verursacht nur Fehlermeldungen. Wenn ich den Text im vim-Editor mit dem
    Text in Kedit vergleiche kann ich keine Unterschiede feststellen. Das Kompilieren des Textes aus
    Kedit funktioniert dagegen einwandfrei.


    /*
    Einlesen zweier Zahlen und mit denen
    eine Division ausführen. Divisionsrest
    wird auch angezeigt.*/
    #include <stdio.h>

    void main(void)
    {

    int zahl_a;
    int zahl_b;
    int div_rest;
    int div_ergebnis;

    printf ("\nBitte Zahl a eingeben : ");
    scanf ("%d",&zahl_a);
    printf ("\nBitte Zahl b eingeben : ");
    scanf ("%d",&zahl_b);


    div_ergebnis = zahl_a / zahl_b;
    div_rest = zahl_a % zahl_b;


    printf ("\n%d / %d = ",zahl_a, zahl_b);
    printf ("%d Rest %d\n",div_ergebnis, div_rest); }

    Kann mir bitte jemand sagen, was diese Fehlermeldung bedeutet?

    Test.c:7: stray '\240' in program
    Test.c: In function `main':
    Test.c:8: warning: return type of `main' is not `int'


    Viele Grüße
    N.
    Geändert von Mr.Nobody (12-01-2003 um 19:43 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    06.01.2003
    Beiträge
    12

    Fehler beim Kopieren gefunden

    Hallo!

    Hab jetzt gefunden worans liegt. Es wird beim Kopieren in den vim das Zeichen | vor void main(void)
    eingefügt. Wenn ich es vor dem Kompilieren entferne erhalte ich ein ausführbares Programm.

    Was ich leider nicht weiß, ist warum dieses Zeichen | einfach von selbst beim Kopieren in den vim-Editor vor void main(void) eingefügt wird. Weiß vielleicht jemand, was ich falsch gemacht habe?

    Gruß
    N.

  3. #3
    igel254
    Gast
    Moin!

    Ich kann dir leider nicht sagen, warum dieses Zeichen da eingefügt wird. Wie kopierst du denn, und nutzt du den grafischen vi?

    Was auf jedenfall funktionieren sollte: Text in Kedit markieren, im vi die Stelle gehen, wo der Text eingefügt werden soll und i drücken. Dann mit der mittleren Maustaste (oder Mausrad) an die selbe Stelle klicken. Fertig.

    Übrigens sollte main vom Typ int sein, nicht void. In der letzten Zeile musst du dann noch return 0; schreiben, also so:
    Code:
    int main()
    {
      /* Programm */
    
      return 0;
    }
    Und als letztes würde ich dir raten, dir anzugewöhnen, das \n am Ende der Zeile zu setzen, nicht am Anfang. Das Problem ist nämlich, dass die Ausgabe gebuffert wird, und dieser Buffer wird nur bei einem \n oder dem Aufruf von flush() geleert und wirklich auf dem Bildschirm ausgegeben. Normalerweise dürfte das nicht das Problem sein, aber wenn du zum Beispiel mit Meldungen dein Programm debuggen möchtest, kannst du auf ärgerliche Probleme stossen. Beispiel:
    Code:
    #include <stdio.h>
    
    int main()
    {
      int *zeiger;
    
      printf("Jetzt lassen wir den Zeiger auf NULL zeigen.");
      zeiger = NULL;
      printf("\nJetzt erzeugen wir den Fehler.");
      *zeiger = 3;
    
      return 0;
    }
    Der Fehler ist in der Zeile *zeiger = 3; (wir versuchen, an eine ungültige Stelle zu schreiben), aber obwohl die Zeile mit printf("\nJetzt erzeugen wir den Fehler."); korrekt ausgeführt wurde, wird sie nicht auf dem Bildschirm angezeigt:
    Code:
    igel@coruscant:~$ ./fehler
    Jetzt lassen wir den Zeiger auf NULL zeigen.
    Speicherzugriffsfehler
    igel@coruscant:~$
    Man hätte also an der falschen Stelle nach dem Fehler gesucht, was bei komplexeren Anweisungen sehr ärgerlich sein kann. Hätte ich printf("Jetzt erzeugen wir den Fehler.\n"); geschrieben, wäre das Problem nicht aufgetreten.

    iGEL

  4. #4
    Registrierter Benutzer
    Registriert seit
    06.01.2003
    Beiträge
    12

    kopieren in vim

    Hallo igel254!

    Danke für die guten Tipps.

    Gruß
    N.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •