Zeichenketten
-
Hallo Leute! Ich hab leider keiner Ahnung von C Prog. soll aber für ein Projekt diese Aufgabe lösen! Kann mir jemand helfen.
Aufgage: Schreiben Sie ein Programm, das aus einer Datei "beispiel.txt" alle Zeilen einliset, die eingelesenen Zeichen in Großbuchstaben konvertiert und auf der Kommandozeile wieder ausgibt. Gehen Sie davon aus, dass die Datei "beispiel.txt" im Arbeitsverzeichnis zu finden ist, das die Zeilen Leerzeichen enthalten und dass eine Zeile nicht länger als 80 Zeichen ist.
Wäre echt nett wenn mir jemand hier helfen könnnte bin völlig Ahnungslos.
LG Julia
[cpp]
-
Ach ja, der Forums-Hausaufgabenservice muß mal wieder ran ... so nicht.
-
Um Tipps darf man ja wohl bitten...
Ich glaube aber nicht, dass du völlig ahnungslos bist. Etwas wirst du ja wohl wissen müssen, wenn du so eine Aufgabe gestellt bekommst. Sag doch einfach mal wie weit du bisher alleine gekommen bist bzw. wie du dir vorstellst das Programm anfangen könnte, um deine Idee weiter auszubauen.
-
seid doch nicht so gemein bevor sie jetzt stunden nach nem anfang sucht
#include <stdio.h> #include <stdlib.h> void toUpper(char *s){ char c; do{ c = *s; if(c >= 'a' && c <= 'z') *s = c - ('a'-'A'); s++; }while(c); } int main(void){ char line[81]={0}; //datei oeffnen FILE *fp = fopen("filename","r+b"); if(fp==NULL){ printf("konnte datei nicht oeffnen"); return 1; } //zeile lesen fgets(line, 80,fp); //vergroessern toUpper(line); printf("%s",line); //datei schliessen fclose(fp); //bye bye babes return 0; }
lg lolo
-
Ja gut es ist kein Neuland für mich aber ich hab keine Ahnung von aus einer Datei leisen und so! Ich hab Arrays in textdateien hineingeschrieben und solche Sachen aber etwas herauslesen...keine Ahnung wie ich da anfangen soll. Es geht ja nicht um Hausaufgaben erledigen sondern um den Ansatz Scheppi
-
Danke noobLolo das ist seeehr nett! Kann jetzt mal versuchen Zeile für Zeil nachzuvollziehen....eine Frage! Wie lernt man das so schnell... also C!!! Das ging flix bei dir!?
LG Julia
-
ja also viel mußt du jetzt nicht mehr machen denke es sind noch 2 zeilen wobei in der 2. nur ein } steht und die erste eine ergänzung zu einer bestehenden ist
-
GAST324 schrieb:
Das ging flix bei dir!?
davon hab ich nichts mitbekommen wie immer ein langer steiniger weg
lg lolo
-
Mensch will das auch können!
danke lolo
-
Den Ausdruck versteh ich bloß noch nicht!
void toUpper(char *s){
char c;
do{
c = *s;
if(c >= 'a' && c <= 'z')
*s = c - ('a'-'A');
s++;
}while(c);
}Zeiger auf s und c muss zwischen a und z liegen aber was mach die nächste Zeile?!hmmm
-
stell dir mal ne ascii tabelle vor und nachdem das immer etwas schwer ist,
http://www.torsten-horn.de/techdocs/ascii.htmdas kleine 'a' entspricht 97 dez
das große 'A' entspricht 65 dezum jetzt aus dem kleinen ein großes zu machen müssen wir von dem kleinen 32 abziehen, und nachdem 'a'-'A' = 32 und dann gehts ganz einfach über zu
c = c - ('a'-'A');
c = c - (32);
*s = c - (32);//statt in c speichern wir sofort in den stringvoid toUpper(char *s){ char c; do{ //dem buffer den buchstaben geben c = *s; //ist es ein kleiner buchstabe if(c >= 'a' && c <= 'z'){ //dann umwandeln wie oben beschrieben *s = c - ('a'-'A'); } //zeiger auf den nächsten buchstaben s++; //wiederholen solange unser buchstabe != 0 }while(c); }
verwend bitte wenn du code postest die c/c++ tags den button unter dem
smiley
-
Der Code ist Schwachsinnig, da nur die erste Zeile eingelesen wird...
-
Gast schrieb:
Der Code ist Schwachsinnig, da nur die erste Zeile
eingelesen wird...
Scheppertreiber schrieb:
Ach ja, der Forums-Hausaufgabenservice muß mal wieder ran ... so nicht.
ja das war schon so gedacht...
@GAST324
axo da ich mir die zahlen der ascii tabelle auch nicht merken will/kann, verwende ich im source eigentlich immer 'a'-'A' dann brauch ich da nicht mit zahlen rum fummeln
-
DANKE LOLO!! langsam wirds hell! Eine andere Frage hätte ich noch, ich weiss aber nicht ob ich dafür ein neues Thema eröffnen muss! Es geht um Wahrheitstabellen!?[cpp]
-
GAST324 schrieb:
Eine andere Frage hätte ich noch, ich weiss aber nicht ob ich dafür ein neues Thema eröffnen muss! Es geht um Wahrheitstabellen!?
aber du könntest schon google zu liebe ein neues aufmachen mit dem titel wahrheitstabellen
-
Scheppertreiber schrieb:
Ach ja, der Forums-Hausaufgabenservice muß mal wieder ran ... so nicht.
geht doch, wie du siehst *fg*
GAST324 schrieb:
Den Ausdruck versteh ich bloß noch nicht!
void toUpper(char *s){
char c;
do{
c = *s;
if(c >= 'a' && c <= 'z')
*s = c - ('a'-'A');
s++;
}while(c);
}^^ vergiss es, das innenleben der schleife gibts schon fertig: http://www.cplusplus.com/reference/clibrary/cctype/toupper/
was bei 'a'-'A' rauskommt, ist sowieso nicht standardkonform, wenn ich mich nicht täusche. aber meistens geht's trotzdem. *fg*
-
kleiner tip noch:
um an sonderpunkte zu kommen, sollte das prog auch mit kleinen Umlauten umgehen können
-
sag mal von welchen sonder punkten redest du? zeig uns doch mal wie das geht dann bekommst von mir ein sternchen :p
lg lolo
-
fricky schrieb:
noobLolo schrieb:
*s = c - ('a'-'A');
was bei 'a'-'A' rauskommt, ist sowieso nicht standardkonform, wenn ich mich nicht täusche. aber meistens geht's trotzdem. *fg*
Und dort wo's geht, unterscheiden sich die beiden meistens um 32, und das ist eine Potenz von 2, deshalb kann man das auch einfacher machen.
-
µngbd schrieb:
fricky schrieb:
noobLolo schrieb:
*s = c - ('a'-'A');
was bei 'a'-'A' rauskommt, ist sowieso nicht standardkonform, wenn ich mich nicht täusche. aber meistens geht's trotzdem. *fg*
Und dort wo's geht, unterscheiden sich die beiden meistens um 32, und das ist eine Potenz von 2, deshalb kann man das auch einfacher machen.
jo, da gabs doch den trick mit 'or 0x20' oder 'and 0xdf' *fg*
-
noobLolo schrieb:
sag mal von welchen sonder punkten redest du? zeig uns doch mal wie das geht dann bekommst von mir ein sternchen :p
lg lolo
na, mit
if(c >= 'a' && c <= 'z') *s = c - ('a'-'A');
erwischt man natürlich nur die "normalen" Buchstaben, also werden üöä nicht zu ÜÖÄ umgewandelt.
Wenn das eine Aufgabe ist, die mit Punkten bewertet wird, würde ich nicht die volle Punktzahl geben, weil die Umwandlung in Großbuchstaben nur unvollständig gelöst ist...