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.
MAXSList 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
linegleichstr.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] = ??? }