chars ?
-
vielleicht hilf dir die funktion strcat() weiter
-
ja, habe ich ja versucht, mit strcat, aber leider fuegt er nicht genau das hinzu, was ich will ! er fuegt nur so \377 und so wietre hinzu ... und das bedeutet, dass nach die lange von prod_temp anders ist als erwartet !
-
huhu,
schau dir mal atoi und sprintf an.
und ignoriere solche leute wie oh_mann einfach.
-
Ja ok,
also ich verstehe deine Frage wirklich nicht.int calcul = ((string1[a] - '0') * (string2[b] - '0')); char char_calc = (char)calcul+'0'; strcat(prod_temp, &char_calc);
Das kann doch nicht funktionieren, du multiplizierst zwei Ziffern. OK,
aber es ist doch warscheinlich, dass das Ergebnis auch 2 Stellig wird.Und den Satz mit der Schleife hab ich nun überhaupt nicht verstanden, was du meinst.
-
also, ich weiss nicht recht wi ich das anstllen soll ! ich habe zewei zahlen, die gegebe sin : zum Beispiel 123 und 321 ! ich muss jetzt jede zahl mit jeder multiplizieren !
aber was tun ? so habe ich sie in ein char-array gesetzt, und so kann ich dann jede zahl einzeln multiplizieren ! aber dann will ich anchher auch, dass dann das resultat als char array ausgegeben wird ! und was soll ich denn tun, wenn es groesser als 10 ist ?
danke im voraus
und @oh_mann -> sorry !
-
Wie xroads42 schon sagte, mit den beiden Funktionen kannst du hin- und herwandeln.
int main() { char Zahl1[4] = "123"; char Feld[256]; int Nummer1; Nummer1 = atoi(Zahl1); sprintf(Feld, "%u", Nummer1); printf("Kontrolle:%s\n", Feld); }
-
gruebel schrieb:
also mein problem ist dieses:
char char_calc = ...;
strcat(prod_temp, &char_calc);strcat() verlangt zwei strings...
Unten habe ich nun Deinen Ansatz zu einem funktionierenden Programm ausgebaut.
#include <stdio.h> #include <string.h> #include <conio.h> int main(void) { int a = 0, b = 0; char string1[16] = "237"; char string2[16] = "656"; char char_calc[3] = ""; // Ergebnis hat max. 2 digits char prod_temp[16] = "Ergebnis: "; int calcul = ((string1[a] - '0') * (string2[b] - '0')); if (calcul > 9) { char_calc[0] = (char) (calcul/10) + '0'; char_calc[1] = (char) (calcul%10) + '0'; char_calc[2] = '\0'; } else { char_calc[0] = (char) calcul + '0'; char_calc[1] = '\0'; } strcat(prod_temp, char_calc); printf("%s", prod_temp); getch(); }
-
gruebel schrieb:
char char_calc = (char)calcul+'0';
strcat(prod_temp, &char_calc);strcat fügt strings aneinander, nicht ein 'char' an einen string. strings enden immer mit einer \0.
wenn dann so:char char_calc[] = {(char)calcul+'0', 0}; strcat (prod_temp, char_calc);
-
gruebel schrieb:
Also, ich weiß nicht recht, wie ich das anstellen soll! Ich habe zwei Zahlen, die gegeben sind: zum Beispiel 123 und 321. Ich muss jetzt jede [Ziffer] mit jeder [anderen Ziffer] multiplizieren! [...] Und was soll ich denn tun, wenn [das Ergebnis] größer als 10 ist?
Ok, ich habe noch die itoa()-Funktionen (und ein return 0, das ich vergessen hatte) hinzugefügt. Was hälts Du davon?
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> int main(void) { int wert1 = 237; int wert2 = 656; int a = 0; int b = 0; char string1[16] = ""; char string2[16] = ""; char char_calc[3] = ""; // Ergebnis hat max. 2 digits char prod_temp[16] = "Ergebnis: "; itoa(wert1, string1, 10); itoa(wert2, string2, 10); int calcul = ((string1[a] - '0') * (string2[b] - '0')); if (calcul > 9) { char_calc[0] = (char) (calcul/10) + '0'; char_calc[1] = (char) (calcul%10) + '0'; char_calc[2] = '\0'; } else { char_calc[0] = (char) calcul + '0'; char_calc[1] = '\0'; } strcat(prod_temp, char_calc); printf("%s", prod_temp); getch(); return 0; }
-
echt super ! @ ein Gast <-- danke vielmals ! wenn ich noch eine frage hab, dann wo mich wenden ??
danke nochmals ...
-
gruebel schrieb:
Wenn ich noch eine Frage hab...
...dann ist dieses Forum bestimmt ein guter Platz dafür. Ich schau wohl in nächster Zeit auch des öfteren mal hier vorbei. (Muss meine C-Kenntnisse wieder etwas auffrischen, und solche "Fingerübungen" sind ganz gut geeignet dafür.).
-
nur eine frage : wie kopiere ich dann diese prod_temp in eine neues array?? denn diese prod_temp entsteht ja in einer schleife, un nach jedem schleifendurchgang wird am ende diee variable prod_temp wieder geloescht ... aber der wert muss erhalten bleiben ! und so will ich den dann in einem "speicher" aufbahren ..
wi geht das ??
danke im voraus !
-
gruebel schrieb:
Nur eine Frage: wie kopiere ich dann prod_temp in ein neues Array?? Denn prod_temp entsteht ja in einer Schleife, und nach jedem Schleifendurchgang wird am Ende diese Variable prod_temp wieder geloescht ... aber der Wert muss erhalten bleiben! Und daher will ich den dann in einem "Speicher" aufbewahren. Wie geht das?
Also i c h würde das Ergebnis mit itoa() einfach wieder in eine (int) Zahl zurückverwendeln, dann ist die Speicherung und Weiterverarbeitung etwas einfacher; siehe mein untenstehendes Programm.
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> int main(void) { int wert1 = 237; int wert2 = 6589; int digits_1 = 3; int digits_2 = 4; int result[digits_1][digits_2]; int i, j; char string1[16] = ""; char string2[16] = ""; char sz_calc[3] = ""; // Ergebnis hat max. 2 digits itoa(wert1, string1, 10); itoa(wert2, string2, 10); for (i = 0; i < digits_1; i++) for (j = 0; j < digits_2; j++) { int calcul = ((string1[i] - '0') * (string2[j] - '0')); if (calcul > 9) { sz_calc[0] = (char) (calcul/10) + '0'; sz_calc[1] = (char) (calcul%10) + '0'; sz_calc[2] = '\0'; } else { sz_calc[0] = (char) calcul + '0'; sz_calc[1] = '\0'; } result[i][j] = atoi(sz_calc); } // Ausgabe // printf(" Zahlen: %d und %d\n", wert1, wert2); printf("----------------------\n"); for (i = 0; i < digits_1; i++) for (j = 0; j < digits_2; j++) printf(" i: %c, j: %c, i*j = %d\n", string1[i], string2[j], result[i][j]); getch(); return 0; }
-
EinGast schrieb:
Also i c h würde das Ergebnis mit itoa() einfach wieder in eine (int) Zahl zurückverwendeln, dann...
Die Funktion dafür heißt natürlich atoi()
, sorry!
-
Hallo gruebel!
Ich lege dir folgende Seiten ans Herz: http://sockenseite.de/usenet/plenken.html und
http://de.wikipedia.org/wiki/Plenken
Viel Spaß damit!Gruß
Philipp