Strings-Encoding
-
Nirgends. Die Frage bleibt dieselbe.
-
-
@Swordfish sagte in Strings-Encoding:
Worauf greifst Du mit
line[0]
zu?
-
@Swordfish auf den ersten Buchstabe oder die erste Zahl vom eingelesenen String
-
Gut. Auf den wievielten Buchstaben greifst Du also mit
line[MAXSL]
zu?
-
@Swordfish dort gebe ich nur an wie viele zeichen ich einlesen kann (darf)
-
@MyWinMyChoice Ich meine Zeile 33. Welchen Wert hat
MAXSL
?
-
@Swordfish ich hab mir gedacht dass ich das so auf str überschreibe (das was ich vorher eingegeben habe)
str = line[MAXSL];
-
-
@Swordfish 81 -> weil ich kann 80 zeichen eingeben und \0 ist das 81ste Zeichen
-
@MyWinMyChoice sagte in Strings-Encoding:
@Swordfish 81 -> weil ich kann 80 zeichen eingeben und \0 ist das 81ste Zeichen
Wenn
line[0]
, wie du sagst, das erste Zeichen ist, das wievielte Zeichen ist dannline[MAXSL]
, bzw.line[81]
?
-
@MyWinMyChoice weil ein string wird immer mit \0 abgeschlossen und \0 wird auch als zeichen bezeichnet
-
Aha.
MAXSL
ist also ein Symbol für 81. Mitline[0]
hast Du gesagt greifst Du auf das erste Zeichen zu. Auf welches Zeichen greifst Du dann mitline[81]
(wie in Zeile 33) zu?
-
@MyWinMyChoice sagte in Strings-Encoding:
@Swordfish ich hab mir gedacht dass ich das so auf str überschreibe (das was ich vorher eingegeben habe)
str = line[MAXSL];
str ist vom Typ
char
. Hat also Platz für ein einziges Zeichen.Mit dem []-Operator greifst du auf ein Element eines Arrays zu. Also niemals auf das ganze Array.
Im Übrigen kann man in C Arrays nicht mit dem = kopieren.
-
@MyWinMyChoice sagte in Strings-Encoding:
str = line[MAXSL]; swapCharsInString (&str, pos1, pos2);
Ich weiß nicht, was das soll.
Du nimmst besser einfachswapCharsInString (line, pos1, pos2); puts(line); /* Kontrollausgabe */
fgets hängt meistens auch noch ein '\n' an.
-
@Wutz das problem bei der sache ist nur dass unser lehrer geschrieben hat dass wir es dort unten mit str machen müssen
-
Hast Du jetzt eigentlich verstanden warum das so wie Du geschrieben hast nichts wird?
Dann mach doch
char *str = line;
oder nenne
line
gleichstr
.Wichtig ist nicht daß Du dich sklavisch daran hältst was Dein Lehrer sagt sondern daß Du jedes Zeichen in Deinem Code selbst verstehst und Deinen Code verteidigen kannst.
-
Dieser Beitrag wurde gelöscht!
-
Hier mal ein Ansatz mit Pseudocode für die eine Funktion:
int main() { char line[MAXSL]; char newLine[MAXSL]; int pos1, pos2; printf ("\nStrings - Encoding"); printf ("\n------------------"); printf ("\nText verfremden und Zeichen vertauschen"); printf ("\nText eingeben (max.80 Zeichen):\n"); fgets (line, MAXSL, stdin); encodeLine (line, newLine); printf ("%s", newLine); printf ("\n\nPosition 1 des zu vertauschenden Zeichens: "); scanf ("%d", &pos1); printf ("\nPosition 2 des zu vertauschenden Zeichens: "); scanf ("%d", &pos2); swapCharsInString (line, pos1, pos2); printf ("\n\n"); return 0; } void encodeLine (char *line, char *newLine) { } int swapCharsInString (char *str, int pos1, int pos2) { str[pos1] = ??? ... str[pos2] = ??? }