strlwr(s1), struper(s2) Konventierung verursacht Fehler
-
Warum
char convert(char*)
?
Die Funktion liefert nichts zurück.Was macht
int switcher
?
Es ist kein ANSI C, Variablen in der for-Schleife zu deklariern,
eigendlich sollte sich dein Compiler da beschweren.Du gibst nur jedes zweite Zeichen aus, du solltest einen else Zweig für die
Charakter, die klein bleiben schreiben.Die Funktion um einen char groß zu machen heisst
int toupper(int)
.
printf(char*,...)
ist imo für ein Zeichen übertrieben.
zu
system("PAUSE")
sag ich mal nichts
-
strlwr(s1), struper(s2)
sind funktionen für strings nicht für einzelne Zeichen!
Das nur noch so angemerkt!toupper(); //groß
Wie Horst2 schon bemerkt.
und
tolower(); //klein
sind für einzelne Zeichen da!
mfg hohesC
-
PHW schrieb:
Es ist kein ANSI C, Variablen in der for-Schleife zu deklariern,
...for(zaehler = 0; zaehler<=(int)strlen(text); zaehler++) { if(zaehler%2 == 0) { printf("%c", strupr(text[zaehler])); } }
wo werden hier Variablen deklariert?
-
Er denkt warsch. hier:
zaehler<=(int)strlen(text);
^^lol
Ich seh auch keine Variablen deklaration in der Schleife!!!
PHW schrieb:
Du gibst nur jedes zweite Zeichen aus, du solltest einen else Zweig für die
Charakter, die klein bleiben schreiben.und übrigens das hatte ich eins davor geklärt!!!
mfg hohesC
-
Salutti,
Ich bin von euch also wirklich positiv Entäuscht...
...Vielen Dank an alle, mit der Variante toupper/tolower funktioniert es. Ich hab es schon mit einem String versucht, allerdings ging es nicht, und dann nahm ich schliesslich die anderen Funktionen..
Wieso char? Weil es ein Teilprogramm ist sprich noch lange nicht fertig
Vielen Dank Leute.
-
probiert mal den:
void cOnVeRt (char *s) { while (*s) putchar ((int)s & 1 ? *s++ & 0xdf : *s++ | 0x20); } int main() { cOnVeRt ("This is a muthafuckin' Text"); }
-
Hallo,
Was 0xdf und 0x20 ist weiss ich, aber nur weil es in meinem Buch stand. Wie finde ich sowas selber raus?
Wieso & und nicht | ? etc. etc...
Gruss johnny.xy
-
Man kann sich if und else sparen!
#include <stdio.h> void convert(char *s) { while(putchar(*s++&0xdf))putchar(*s++|0x20); } int main() { convert("hallo you"); }
mfg hohesC
-
hohesC schrieb:
while(putchar(*s++&0xdf))putchar(*s++|0x20);
sehr schön
-
BITS sag ich bloß:
Bsp für a vergrößern:
1 1 0 0 0 0 1 = a = 97 & 1 0 1 1 1 1 1 = 95 ----------------- 1 0 0 0 0 0 1 = A = 65
zum erklären bin ich zu faul!(schreib mir doch die finger nicht wund)
das Geheimnis liegt im 6ten bit(DEZ 32)!
pack mal 32 auf einen großbuchstaben
und nimm 32 von nem kleinbuchstaben weg!BSP:
printf("%c\t%c ",'a'-32,'A'+32);
mfg hohesC
-
oder mit A zum verkleinern:
1 0 0 0 0 0 1 = A = 65 | 0 1 0 0 0 0 0 = 32 ----------------- 1 1 0 0 0 0 1 = a = 97
-
Danke, genau Beschreibung find ich in meinem Buch... aber wie ich weiteres rausfinde, ich möchte generell mehr Hex/0x-Werte benutzen... weils einfach schöner aussieht und man (denke ich) dabei lernt.
Vorgang:
Mit anderen Worten, Beispiel A mit Beispiel B im Binärmodus (sprich: Ascii Zahl für Buchstabe umwandeln) vergleichen und sich errechnen, damit man zum Ziel kommt. Habe ich das richtig verstanden?Gruss johnny.xy
-
weils einfach schöner aussieht und man (denke ich) dabei lernt.
du lernst mehr wenn du Anfangs alles ausführlich machst.
das mit dem schöner aussehen ist sone Sache, nachher ist dein code unübersichtlich und du hast später kein Plan mehr was da steht!
mfg hohesC
-
Hi hohesC,
Ich habe es jetzt eher auf Bit Arithmetik bezogen.
Vielen Dank aber für deine Hilfe.
Schönen Abend,
johnny.xy
-
Außerdem: wer verlang schon, das man alle Dezimalzahlen im Kopf in Hex umrechnen kann?! Wozu gibts denn Taschenrechner..;)
Ich würd aber auch sagen immer im Dezimalsystem bleiben, das macht den Code einfach übersichtlicher!
-
Splieth@School schrieb:
Außerdem: wer verlang schon, das man alle Dezimalzahlen im Kopf in Hex umrechnen kann?! Wozu gibts denn Taschenrechner..;)
Ich würd aber auch sagen immer im Dezimalsystem bleiben, das macht den Code einfach übersichtlicher!ist wohl geschmackssache. ich finde bei ganzzahligen unsigned datentypen hex besser. dabei kann man jedes bit 'sehen'. ein 32 bit wert aus lauter einsen sieht doch als 0xffffffff besser aus als 4294967295
-
Salutti,
Ein kleines Programm zur aufwärmung für mich:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int zahl1; int zahl2; int resultat; zahl1 = 0xff; zahl2 = 0xff; resultat = zahl1 * zahl2; /* What's wrong? */ printf("Zahl %h * %h = %d = %d\n", &zahl1, &zahl2, resultat, resultat); system("PAUSE"); return 0; }
%h = hex
%o = Okt.
%d = digit, Zahlen, oder?Thank you!!!
-
Hi, öhm... naja...
... printf("Zahl %x * %x = %d = %d\n", zahl1, zahl2, resultat, resultat); ...
no comment... habt ihr gemerkt, kleine werden gross
gruss johnny.xy