» Mein Programm soll einen zu langen string in ein array einlesen, überschreiben und ausgeben

Platformunabhängige Consolenbefehle in CNeuen Thread eröffnenNeue Antwort erstellenMein Programm soll einen zu langen string in ein array einlesen, überschreiben und ausgeben
AutorNachricht
Beobachter 
Anmeldedatum: 07.01.2024
Beiträge: 1
09.01.2024, 11:34
zitieren

Hallo,

Kann mir jemand sagen, warum es hier nicht wie gewünscht z.B. die ausgabe "hellooo" gibt sondern stack smashing?

Woher kommt die leerzeile bei meiner Terminal ausgabe:


helloooo

*** stack smashing detected ***: terminated
Aborted (core dumped)

#include <stdio.h>


int main() {
  char buffer[5];
  char c;
  int idx = 0;

  while ((c = getchar()) != EOF) {
    buffer[idx++] = c;
  }
  buffer[idx + 1] = '\0';
  printf("%c\n", buffer);

  return 0;
}


pn
Beobachter 
Anmeldedatum: 08.01.2024
Beiträge: 2
09.01.2024, 21:52
zitieren

Servus,
den Fehler welchen ich gesehen habe ist das du in der printfunktion als Ausgabeformat char verwendest es sich aber um die Ausgabe des ganzen strings handelt und du hier "%s" nutzen musst. bei "%c" müsstest du dann einzeln durch das ganze Array iterieren.
Der andere Punkt ist dass die Ausgabe des Arrays so auch gar nicht stattfindet, da der ganze Inputpuffer schon im Kopf der Whileschleife geschluckt wird. Da hier die Eingabe Zeichen für Zeichen in c gespeichert wird solange es nicht end of file also Ende des Eingabestroms ist und anschließend wird dann im buffer nur \n gespeichert.


pn
Beobachter 
Anmeldedatum: 07.01.2024
Beiträge: 1
10.01.2024, 07:09
zitieren

Ich denke jetzt, dass stack smashing auftritt, weil ich die länge des buffers und sein '\0' überschreibe, stimmt das?

Ich verstehe nicht, was du mit "da der ganze Inputpuffer schon im Kopf der Whileschleife geschluckt wird." meinst - der Kopf ist doch nur
while ((c = getchar()) != EOF) {
.

Wieso findet dann die ausgabe des arrays nicht statt? Auf meiner konsole wird es doch ausgegeben.
Hier ist noch einmal meine Eingabe (helloooo) und die terminal ausgabe dazu:


helloooo
helloooo
c
*** stack smashing detected ***: terminated
Aborted (core dumped)


int main() {
  char buffer[5];
  char c;
  int idx = 0;

/*
  for (int i = 0; i < 5; i++)
    printf("%c\n", buffer[i]);
*/

  while ((c = getchar()) != EOF) {
    buffer[idx++] = c;
  }
  buffer[idx + 1] = '\0';
  printf("%s\n", buffer);

  return 0;
}


pn
Gast 
10.01.2024, 07:09
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Mein Programm soll einen zu langen string in ein array einlesen, überschreiben und ausgeben" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Hilfe bei C-Programm / Zahlen aus einer Datei in ein Array einlesen.
Hallo, ich bräuchte mal eure Hilfe für ein kleines C-Programm: - in einer TXT-Datei befinden sich als Beispiel 3 Zahlenreihen mit jeweil 6 Zahlen in 1 Reihe: BSP: Test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Die Zahlen sind durch ein...
[C]von Vision73
0
96
15.05.2023, 16:28
Vision73
Array Ausgeben
Hi Leute, habe gerade folgenden Code verfasst... public class Array { public static void changeArray(int[] array) { for(int i= 0; i < array.length; i++) { if(array[i] % 2==0) { array[i]= array[i]*-1; } else { array[i]=array[i]*10; } } } public static...
[Java]von DeppJonez
1
319
01.02.2017, 19:42
angemon
Programm zum Einlesen von Dateien
Hallo, ich bin im Bereich der Programmierung (bis auf Access) komplett unerfahren, daher suche ich hier Hilfe. Folgende Aufgabenstellung: Ich speichere Emails (Anzahl unbekannt) aus einem Emailprogramm heraus in einen bestimmten Ordner. Die Daten...
[Allgemein]von Maik6464
1
351
27.02.2011, 15:07
Maik6464
Struct Array char array eingeben
Guten Tag, bin neu hier :) wollte mir ein bisschen Hilfe suchen für mein kleines Programm. Hab mir ein Struct erstellt mit einer Funktionsvariable (array) mit 3 Komponenten. Die Größe des Array sollte sich auf 20 Felder begrenzen welche ich nochmals...
[C]von Noob
2
254
01.06.2020, 20:20
Noob
 Mein Reinigungs-Programm
Hi, ich will euch mein Reinigungsprogramm vorstellen, ich weiß, es gibt schon etliche (Ccleaner, usw...), aber ich denke das mein "Cleandrive" schon mithalten kann. Es ist kostenlos einfach und werbe frei, ich wollte jetzt wissen was ihr davon...
[Allgemein]von GamesForLife
2
232
27.04.2011, 21:23
GamesForLife
Soll ich einen Civic EK kaufen?
Hallo erstmal, war jetzt lange nicht mehr im Forum, da ich erst meinen Realschulabschluss gemacht hab, dann Abschlussfahrt und danach noch im Urlaub war. Natürlich bin ich HONDA treu geblieben. aber in letzter zeit interessiere ich mich für den EK...
von beNe
20
2.962
17.08.2005, 07:16
beNe
habe einen motorschaden, zu wenn soll ich gehen?
Hallo alle, mir ist leider was passiert mit meinem ep3 und nun ist der motor sozusagen im arsch. die bei honda haben zu mir gemeint, da muß ein neuer motor rein kosten 7000,- ohne einbau. ganz schön happig!!!!!! habe auch schon selber mal bei zwei...
von Marcos123
77
10.252
23.01.2008, 09:56
Marcos123
Morgen soll ich einen neuen Accord 2.0 Sport bestellen...
...das Auto gefällt mir sehr gut, hab' aber nun ein kleines Problem und zwar, dass das Model schon drei Jahre (oder sogar vier) auf dem Markt ist. Kann es vorkommen dass ich Morgen einen neuen kaufe und Übermorgen schon einen "alten" (altes...
von hrabia
16
1.041
31.08.2006, 15:36
felline
Soll mein Sol weg?
Hey leute! War gestern beim TÜV alles soweit super mit meine karre! nur ich muss mein Intake richtig befestigen sonst hat der Mann gesagt dass ich locker durch den TÜV Komme! 8) Moto hat er gesagt 201000 KM nicht schlecht! Alles tip top! :) So...
von Indie on the Rocks
40
2.127
06.10.2007, 13:20
gonzo
Wie tief soll mein ej9???
Hallo, ich bin neu hier! Habe seit 1 woche einen ej9 und habe vor, ihm eine tieferlegung und felgen zu "spendieren". ich habe mich für federn und nich für ein komplettes fahrwerk entschieden (40/30 von AP ; 35/35 von h&r , oder schlagt...
von Spiel0r.pl
52
4.143
30.01.2006, 18:59
ToxiT
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |