Hilfe mit gets()
-
Hallo alle zusammen.. mein name ist alejandro und komme aus spanien.. meine Deutsch kenntnise sind nicht so gut aber ich werd es trotzdem versuchen euch zu erklaeren was mein problem ist...
ich lerne seit 2 tagen C ansi und ich versuche ein Spanisch-Deutsch übersetzer zu c0dieren.. also ein kleiner uebersetzer indem fast nur schimpfwoerter zu uebersetzen sind.. und mein problem liegt hier:
#include <stdio.h> #include <stdlib.h> int main() { printf(" Traductor espaniol aleman \n\n\n"); system("pause"); system("cls"); inicio: printf("Lista de las palabras a Traducir: \n\n"); system("pause"); printf("cabron, puto, maricon, jodete, follar,\n\n"); system("pause"); char traductor[64]; printf("Escriba palabra para traducir: "); scanf("%s", &traductor); if(strcmp(traductor,"cabron")==0) { printf("La traduccion al Aleman es: a**chl**h\n\n"); system("PAUSE"); system("cls"); goto inicio; return 0; } if(strcmp(traductor,"puto")==0) { printf("La traduccion al Aleman es: a**ch\n\n"); system("PAUSE"); system("cls"); goto inicio; return 0; } if(strcmp(traductor,"maricon")==0) { printf("La traduccion al Aleman es: schwul\n\n"); system("PAUSE"); system("cls"); goto inicio; return 0; } if(strcmp(traductor,"jodete")==0) { printf("La traduccion al Aleman es: f..ck dich\n\n"); system("PAUSE"); system("cls"); goto inicio; return 0; } if(strcmp(traductor,"follar")==0) { printf("La traduccion al Aleman es: bumsen\n\n"); system("PAUSE"); system("cls"); goto inicio; return 0; } }
Ok das was ich wil..ist auf mein programm wörtern wie zumbeispiel
"Hola que tal" zu schreiben... aber immer wenn ich so ein wort schreibe geht mein program aus...ich weiss nicht wie ich wörtern mit "leerzeichnen" schreiben soll ohne das mein program aus geht.. ich habe gehoert dass so was mit "GETS()" möglich ist.. aber da ich seit nur 2 tagen anfange zu lerne... weiss nicht wie ich das benutzen soll...also kann mir jemanden helfen???
MfG
Alejandro
-
Die richtige Funktion heißt fgets() und wird so angewendet:
fgets(traductor,stdin,64);
(anstelle der scanf()-Aufrufe)
Übrigens ist dein Programm nicht besonders gut erweiterbar - pack lieber die Wörterpaare in eine Datei, die du am Programmanfang einlesen kannst.
-
Vielen dank CStoll hehe jetzt gehe ich ein bisschen "spielen" und versuche das so zu machen wie du es gesagt hast.. höffentlich schaffe ich das
also wenn ich eine datei mit alle wörter zusammen packe.. dann kann ich sie aus mein programm einfach so rufen??
welche function bräuchte ich dafür.-... vielleicht for()???
im batch mache ich sowas mit FOR aber in C weiss ich ja nicht..
MfG
alejandr0
-
Du brauchst ein Array, in das du alle Wörterpaare reinpacken kannst (in C ist das eine Heidenarbeit - ein Grund, warum ich lieber C++ verwende ;)) - und dort drin kannst du dann mit einer for()-Schleife nach den Wörtern suchen:
//stark vereinfacht typedef struct { char span[20],germ[20]; } wort; wort dict[50]; ...//Wörterbuch füllen char input[20]; fgets(input,stdin,20); for(i=0;i<50;++) if(strcmp(input,dict[i].span)==0) printf("La traduccion al Aleman es: %s\n\n",dict[i].germ);
-
dankeeeeeeeeee
ich glaub ich werd besser Deutsch lernen.. da die spanische C forums.. die helfen dir fast nie... voll die..
vielen dank
hast mir mehr hoffnung verschafft..
jetzt kann ich anfangen ein guter translater zu schreiben... ( für anfaenger )
hehe wenn er fertig ist dann poste ich den hier wenn ich darf..
MfG
alejandr0
-
CStoll schrieb:
fgets(input,stdin,20);
Mal ne Frage am Rande. Müsste es laut der Syntax von fgets() nicht eigentlich heißen:
fgets(input,20,stdin);
Ist das egal oder macht das irgend einen unterschied?
-
char * fgets ( char * str, int num, FILE * stream );
Tja, da hat sich CStoll wohl vergaloppiert
Falls das überhaupt irgendein Compiler übersetzt *zweifel* wird es zumindest abschmieren.greetz, Swordfish
-
CStoll schrieb:
Du brauchst ein Array, in das du alle Wörterpaare reinpacken kannst (in C ist das eine Heidenarbeit - ein Grund, warum ich lieber C++ verwende ;))
schon wieder 'viral advertising' (wie heisst das auf deutsch?)
btw: ich bin mir sicher, dass man auch eine c-library für maps, assoziative arrays und dergleichen findet...