2010-02-12 6 views

Répondre

2

sprintf() et snprintf() sont bons pour cela.

0

Je pense que vous pourriez être à la recherche sprintf

Exemple:

char string[50]; 
int file_number = 0; 

sprintf(string, "file.%d", file_number); 
file_number++; 
output_file = fopen(string, "w"); 
+0

Pouvez-vous me donner un exemple de la façon dont cela pourrait aider? – Adam

+0

La documentation est un exemple. Si vous recherchez un support opérateur intégré pour cela, vous ne le trouverez pas. –

0
char *buf = (char*)calloc(1,512); 

sprintf(buf, "\fDeposited $%0.2d\nAdd $%0.2d more", disp_money, temp); 

?

1

strcat est le moyen de le faire. Pour plus concaténation avancé, pensez sprintf:

sprintf (buf, "\fDeposited $%s\nAdd $%s more", disp_money, temp); 
0

Gestion de la mémoire en C est manuel. Pour concaténer les chaînes, vous devez fournir une variable tableau avec suffisamment de caractères pour contenir le résultat final. Vous pouvez allouer cette variable tampon sur la pile, en tant que variable locale à votre fonction, ou sur le tas, en utilisant malloc().

Ou vous pouvez éviter d'allouer le tampon en évitant d'effectuer une concaténation, si ce que vous avez l'intention de faire est d'afficher les chaînes. Dans ce cas, les éléments suivants:

 
lcd_putc("\fDeposited $"); 
lcd_putc(disp_money); 
lcd_putc("\nAdd $"); 
lcd_putc(temp); 
lcd_putc(" more"); 

est un moyen simple d'écrire ce que vous pourriez utiliser. Cette méthode a l'inconvénient d'entraîner le surcoût (le cas échéant) dû à lcd_putc(). Cette méthode a l'avantage de ne pas nécessiter de concaténation de chaînes.

Si et quand vous faites besoin de concaténer des chaînes, vous voulez utiliser snprintf() pour faire en sorte que vous ne déborde pas votre tampon (voir le nom de ce site Web), donc ne pas utiliser sprintf().

Juste pour vous montrer la voie à ce jour futur lorsque vous devez concaténer des chaînes:
#define STR_DEPOSITED "\fDeposited $"
#define STR_ADD "\nAdd $"
#define STR_MORE " more"
int total_length = strlen(STR_DEPOSITED) + strlen(STR_ADD) + strlen(STR_MORE) + strlen(disp_money) + strlen(temp) + 1;
char * buffer = malloc(total_length + sizeof(char));
snprintf(buffer, "%s%s%s%s%s", STR_DEPOSITED, disp_money, STR_ADD, temp, STR_MORE);

Vous pouvez également faire la même chose en utilisant strncpy(), strncat(). En guise de remarque, pensez également à utiliser strnlen() sur les variables, afin de ne pas lire au-delà de la fin du tampon non-terminé.

0

Les chaînes ne sont pas des objets de première classe dans C, donc il n'y a pas de support de langage pour la concaténation de la manière que vous décrivez. Il y a, cependant, beaucoup de différentes fonctions que vous pouvez appeler qui vous donnent la sortie dont vous avez besoin.

Probablement le plus simple à utiliser est sprintf. Sachez que vous devez fournir un tampon de sortie assez grand pour contenir la chaîne résultante, et sprintf ne vérifie pas les limites, si vous avez accès à snprintf ou sprintf_s, utilisez-le à la place.

char output[SUFFICIENTLY_LARGE_VALUE]; 
sprintf (output, "\fDeposited $%s\nAdd $%s more", disp_money, temp); 

%s dans la chaîne de sprintf représente un lieu où un paramètre de chaîne est inséré, la première% est le premier argument (disp_money) et le second% est le second argument (temp).

Questions connexes