PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ein array in ein string packen in C



boba
11-11-2005, 22:45
Hallo,

kann ich den Inhalt eines arrays in einen string packen,
irgentwie sind ja strings auch nur arrays soweit ich das verstanden habe.
Ich habe mit der Syntax von strcpy und sprintf rumgespielt aber leider erfolglos.
Zur Zeit nutze ich eine for Schleife um den Inhalt anzuzeigen,
würde das ganze aber gerne über eine variable ansprechen können.


danke

peschmae
12-11-2005, 07:46
Strings in C sind ein Char-Array mit einem 0 im letzten Char. (Also ein "richtiges" 0 und kein Char-0 im Sinne von '0')

Was genau willst du jetzt wissen?

MfG Peschmä

boba
12-11-2005, 09:44
Ich bastel mir ein Zahlensystem convertierungstool, nur so um C zu lernen.
Und möchte später über eine switch case anweisung die Zahlensysteme auswählen.
Die Ergebnisse sollen seperat in variable gepackt werden, so das ich diese nur noch ausgeben muss, und nicht für jede ausgabe eine Extra for schleife brauche:



/*test1.c*/

#include <stdio.h>
#include <string.h>

main()
{
unsigned long int z, b, q, r, step=0;
unsigned long int erg[20];
int i;
char dual[20], dual2;
printf("Gib Zahl ein !\n");
scanf("%d", &z);

printf("Gib Basis ein !\n");
scanf("%d", &b);
//printf("\nsteps:%d\n", step);
q = z / b;
r = z%b;
printf("\n Zahl: %5d | Rest : %3d \n", q, r);
erg[step] = r;

while (q > 0)
{
step++;
r = q%b;
q = q / b;
printf(" Zahl: %5d | Rest : %3d \n", q, r);
erg[step] = r;

//printf("%d", erg[step]);
}


printf("\nsteps:%d\n", step);
for (i=step; i >= 0; i--)
{
//sprintf(dual2,erg[i],sizeof(erg));
//strcpy(dual[i], "erg[i]");
//strcpy(*dual2, erg[i]);

}

printf("%d", dual2);
}

karx11erx
17-11-2005, 11:58
boba,

ich würde Dir ja gerne helfen, aber ich habe nicht wirklich verstanden, was Du eigentlich willst.

Willst Du das Ergebnis der Konvertierung in einem String ablegen, den Du dann auf einen Rutsch ausgeben kannst?


#include <string.h>
#include <stdio.h>

char *ConvStr (int n, int b, char *pszResult)
// lege Zahl z zur Basis b in pszResult ab
{
int i = 0;
static char digits [] = "0123456789ABDEFGHIJKLMNOPQRSTUVWXYZ";

if (b && (b < sizeof (digits)) {// nicht durch 0 teilen
do {
pszResult [i++] = digits [n % b]; // die Zahl wird falschrum abgelegt
n /= b;
} while (n); // mindestens "0" sollte im String drinstehen
pszResult [i] = '\0'; // abschließendes 0-Byte anfügen
strrev (pszResult); // String umdrehen
}
else
strcpy (pszresult, "NAN"); // not a number
return pszResult; // das ist nachher komfortabel ;)
}

int main (void)
{
char szResult [100];
long z, b;

// Zahlen einlesen ...

printf ("%s\n", ConvStr (z, b, szResult)); // Konvertieren und Ergebnis ausgeben
return 0;
}