Verfügbare Informationen zu "Problem bei Übung"
Qualität des Beitrags: Beteiligte Poster: niki1 - Xin Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: C / C++ Antworten: 6 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: Problem bei Übung Letzte Antwort: vor 16 Jahren, 3 Tagen, 9 Stunden, 45 Minuten
Alle Beiträge und Antworten zu "Problem bei Übung"
Re: Problem bei Übung
niki1 - 11.04.2008, 14:01Problem bei Übung
Hallo Leute,
mein Lehrer hat uns eine Übung gegeben die wir freiwillig mahcne sollten, so nun will ich sie machen jedoch weiß ich nicht wie ich sie llösen soll , wenn ihr mir doch igendwie helfne könntet.
Die Aufgabenstellung ist :
/*
Angabe
Schreibe ein Programm, das
- eine Datei zeilenweise einliest
- in jeder Zeile das Wort '2AHEL' sucht und
- wenn es vorkommt die Zeile ausgibt.
Verwende strcmp aus string.h
*/
Kann mir jemand Tipps geben , oder vielleicht die Übung löst
oder nur eine Hilfestellung, ich wäre für alles dankbar.
Mfg niki1
Re: Problem bei Übung
Xin - 12.04.2008, 01:39Re: Problem bei Übung
niki1 hat folgendes geschrieben: Hallo Leute,
mein Lehrer hat uns eine Übung gegeben die wir freiwillig mahcne sollten, so nun will ich sie machen jedoch weiß ich nicht wie ich sie llösen soll , wenn ihr mir doch igendwie helfne könntet.
Die Aufgabenstellung ist :
/*
Angabe
Schreibe ein Programm, das
- eine Datei zeilenweise einliest
http://www.galileo-press.de/openbook/c_von_a_bis_z/c_018_015.htm
niki1 hat folgendes geschrieben: - in jeder Zeile das Wort '2AHEL' sucht und
Also eine Schleife, dass nach dem 1. Buchstaben des Wortes sucht und wenn es den gefunden hat, guckt ob der folgende Buchstabe dem Wort entspricht, bis das ganze Wort erkannt wurde - oder auch nicht. niki1 hat folgendes geschrieben: - wenn es vorkommt die Zeile ausgibt.
Das solltes so machbar sein ;-)
niki1 hat folgendes geschrieben: Verwende strcmp aus string.h
strcmp vergliecht Strings, aber keine Teilstrings - also sagt nicht aus, dass ein String Teil eines anderen String ist.
Passt nicht zur beschriebenen Aufgabe!?
niki1 hat folgendes geschrieben:
*/
Kann mir jemand Tipps geben , oder vielleicht die Übung löst
oder nur eine Hilfestellung, ich wäre für alles dankbar.
Vielleicht kannst Du die Aufgabe mal im Wortlaut abschreiben, weil das strcmp passt einfach nicht zum Problem.
Re: Problem bei Übung
niki1 - 21.04.2008, 18:07
Hier ich hab die Lösung von der Übung
Code: /*
Angabe 'grep':
Schreibe ein Programm, das
- eine Datei zeilenweise einliest
- in jeder Zeile das Wort '2AHEL' sucht und
- wenn es vorkommt die Zeile ausgibt.
Verwende strcmp aus string.h
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i, lenT, lenS;
char text[100], suche[] = "2AHEL";
FILE *in;
in=fopen("test.txt","r");
if(in == NULL)
{
perror("Info:test.txt");
getchar();
return 1;
}
else
{
printf("Info:Datei erfolgreich geöffnet\n");
}
printf("Vorkommen von '%s':\n", suche);
lenS = strlen(suche);
while(fgets(text, 99, in) != NULL)
{
lenT = strlen(text);
for(i=0; i<=lenT-lenS; i=i+1)
{
if(strncmp(&text[i], suche, lenS) == 0)
{
fputs(text, stdout);
}
}
}
fclose(in);
getchar();
return 0;
}
Nur versteh ich nicht warum er das macht : Code: for(i=0; i<=lenT-lenS; i=i+1)
{
if(strncmp(&text[i], suche, lenS) == 0)
{
fputs(text, stdout);
}
Kann mir das mal jemand erklären? Und warum macht er da bei strncmp "&text[i]" warum das & , das ist ja nur die Adresse vom String!
Mfg niki1
ps.: gibt es auch eine 2 Möglichkeit?
Re: Problem bei Übung
Xin - 21.04.2008, 18:48
niki1 hat folgendes geschrieben: Hier ich hab die Lösung von der Übung
Code: /*
Angabe 'grep':
Schreibe ein Programm, das
- eine Datei zeilenweise einliest
- in jeder Zeile das Wort '2AHEL' sucht und
- wenn es vorkommt die Zeile ausgibt.
Verwende strcmp aus string.h
Nur versteh ich nicht warum er das macht : Code: for(i=0; i<=lenT-lenS; i=i+1)
{
if(strncmp(&text[i], suche, lenS) == 0)
{
fputs(text, stdout);
}
Kann mir das mal jemand erklären? Und warum macht er da bei strncmp "&text[i]" warum das & , das ist ja nur die Adresse vom String!
Das ist nicht die Adresse vom String, sondern die Adresse(&) von text beim i. Zeichen. wenn Du text übergibst, ist das Identisch zu &text[0] - der Adresse des 0. Zeichens. Du könntest auch text+i schreiben, die Zeichen werden ja nur aufaddiert auf das erste Zeichen. text + i ist aber eher... sagen wir... unschön.
Was ich nicht verstehe ist, dass Du strcmp verwenden sollst, die Lösung der Aufgabe aber kein strcmp enthält...
niki1 hat folgendes geschrieben: ps.: gibt es auch eine 2 Möglichkeit?
Was genau meinst Du mit EINER zweiten Möglichkeit? Es gibt vermutlich hunderte zweite Möglichkeiten. Es gibt aber eine, die für große Texte als besonders hochwertig gilt: Boyer Moore lässt grüßen.
Re: Problem bei Übung
niki1 - 21.04.2008, 19:22
Ja es gibt ja ein strncmp das er verwendet, wahrscheinlich hat er sich verschrieben.
ich meine damit ob es einen leichteren Weg gibt diese Übung zu lösen.!"
Re: Problem bei Übung
Xin - 21.04.2008, 23:11
niki1 hat folgendes geschrieben: Ja es gibt ja ein strncmp das er verwendet, wahrscheinlich hat er sich verschrieben.
strncmp ist aber nicht strcmp.
Wenn Du in der Matheklausur schreibst 1 + 2 = 4 redest Du Dich ja auch nicht raus, dass Du Dich verschrieben hättest. Genausowenig wie Dir Dein Mathelehrer bei 1+2=3 falsch hinschreiben kann mit der Begründung, dass er eigentlich 1+3 schreiben wollte und sich verschrieben hat.
Für'n Lehrer etwas schlampig - grade im fach Informatik, wenn auch noch C gelehrt wird.
niki1 hat folgendes geschrieben: ich meine damit ob es einen leichteren Weg gibt diese Übung zu lösen.!"
In C? Wüßte ich jetzt spontan nicht. Man könnte teile des Codes auf die Shell verlagern und die Datei beim Aufruf reinpipen. (programm < text.txt). Wäre als programm aber nicht mehr identisch.
In C++? Vielleicht mit Streams...
Mit einem besseren Framework? Sicherlich.
In Sprachen, die Zeichenkettenorientiert sind? Sehr wahrscheinlich.
Ich bringe meinen C-Schülern (bin kein Schul-Lehrer) strcmp usw. gar nicht bei. Die programmieren das von Hand aus. Und die programmieren auch nur am Anfang langsamer...
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Probleme mit Dev-C++ - gepostet von Mobin am Donnerstag 30.11.2006
Druckversion - gepostet von Moritz am Mittwoch 20.02.2008
video automatisch starten? - gepostet von pliman am Donnerstag 03.08.2006
Eingabe von Zahlen nicht beachten. - gepostet von Kimi am Dienstag 29.01.2008
splittext - gepostet von DrPhil_Guth am Donnerstag 15.03.2007
Welche kostenlose Firewall ist die sicherste? - gepostet von Danny am Freitag 13.04.2007
crt.vpi nicht gefunden - gepostet von necator am Sonntag 17.06.2007
Ein Programm um eine Nachricht zu versenden? - gepostet von niGGo am Dienstag 27.03.2007
Ähnliche Beiträge wie "Problem bei Übung"
Bewerbung für Kara und den 25er Raid - Horax (Montag 15.10.2007)
Klassenbedarf 25er Raid/gilde - Ukic (Sonntag 11.11.2007)
2 Raidtag für Kara ? - ibar (Mittwoch 03.10.2007)
Ml 9 Raid am Samstag den 07.08.2004 - Zitter (Donnerstag 05.08.2004)
RAID ZEITEN !! - Hautrauf (Donnerstag 29.06.2006)
zul raid - jaquline (Montag 12.11.2007)
Änderungen Raid-Anmelde-System - Farad (Mittwoch 22.02.2006)
4.*Boss* in Kara - Myx (Sonntag 02.09.2007)
2 Kara Gruppen - lupidu (Donnerstag 10.05.2007)
Raid-Anmeldung Bemerkungen - Limette (Mittwoch 06.06.2007)