2 Questions : Concanténation & ...

Lord_Vking Messages postés 44 Statut Membre -  
 Lord_Vking -
Bonjours, j'ai deux questions bien facile...

premierement comment puis-je concanténé disons :

string nom;
cin >> nom;

string bob = "Mon nom est " + nom + ".";

???? Ce dois pas être très compliquer, mais quand tu sais pas.. tu sais pas :/

--------------------------------2------------------------------

Comment je peux écrire dans un fichier txt ? disons que je veut mettre le contenue de bob(string) dans un fichier .txt ... comment je fait ?!
A voir également:

10 réponses

Guki
 
Salut!

Si avais appris le C tu saurais :-P

Mais comme je ne suis pas vache je vais te donner les fonctions en C.

#include <string.h>
char *strcat(char *s1, const char *s2)


ou bien

#include <string.h>
char *strncat(char *s1, const char *s2, size_t n)
0
Lord_Vking Messages postés 44 Statut Membre 11
 
Et Pour écrire dans le Fichier ? ^^
SVP... Merci d'avance :)
0
Guki
 
Pour écrire seulement

#include <stdio.h>
size_t fwrite(const char *ptr, size_t size, size_t nmemb, FILE *stream);


Avec ptr un pointeur vers la chaine de caractère/entier à écrire, size la taille d'un élément de la chaine, nmemb le nombre d'élément contenu dans cette chaine et stream le flux ouvert pointant vers le fichier.

Bien entendu il faut d'abord ouvrir le fichier avec:

#include <stdio.h>
FILE *fopen(const char *filename, const char *mode);


Pour lequel on utilise mode == "w" comme write pour l'écriture d'un fichier texte.

Une fois que l'on utilise plus ce flux (stream) on le fermera par:

#include <stdio.h>
int fclose(FILE *stream);
0
Lord_Vking Messages postés 44 Statut Membre 11
 
Mouarf.. j'te comprend vraiment pas :( chui débutant moi... c'est bien bo me sortir les prototypes, mais je commence, je sais pas comment les utliser :/ si tu pourrait me donner un exemple simple et concret... avec les chose au bonne place... Svp :) ce serait vraiment sympa... ( pour une ou les deux si possible ) (concanténation et écriture dans un fichier )...

Merci a lavance jeune maitre ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Guki
 
Bon on va faire simple:

char s1[10] = "compil";
char s2[5] = "ateur";

strcat(s1, s2);


La fonction strcat va concaténer la chaine "compil" et "ateur" pour donner "compilateur" et elle retourne un pointeur vers la chaine concaténée qui est s1. En effet la fonction écrit dans s1 alors il faut prévoir la place suffisante.

Même chose avec strncat sauf au lieu de cherche le caractère de fin de chaine pour s2 ce sont seulement les n 1er caractère qui écraseront le caractère de fin de chaine de s1.

char s1[10] = "compil";
char s2[5] = "ateur";

strcat(s1, s2, 3);


Ceci donnera "compilate".
0
Guki
 
Maintenant en ce qui concerne l'écriture d'un fichier texte:

FILE *stream;

/* creation ou ecrasement d'un fichier en lecture et ecriture */

stream = fopen("fichier.txt", "w");
char chaine[256] = "message";

/* ecriture de 7 octet */

fwrite(chaine, sizeof(char), 7, stream);

/* fermeture du flux */

fclose(stream);
0
Lord_Vking Messages postés 44 Statut Membre 11
 
Pour ton exemple un.. de concanténation MERCI bcp.. :) c simple, mais, mon compilateur...

c:\Documents and Settings\Yan\Mes documents\Visual Studio Projects\teste\teste.cpp(8): error C2117: 's2' : array bounds overflow

c:\Documents and Settings\Yan\Mes documents\Visual Studio Projects\teste\teste.cpp(8) : see declaration of 's2'

c koi ce overflow... ?
0
Lord_Vking Messages postés 44 Statut Membre 11
 
Bon.. La il me fait une grosse Erreur, quand je le launch ( il se compile ) ...

#include<iostream>
#include<string>
using namespace std;

int main()
{
char s1[11] = "compil";
char s2[6] = "ateur";

strncat(s1, s2, 5);

cout << s1;
cout << endl;
cout << s2;

}

Il me dit :::
Stack around the variable 's1' was corrupted.

Merci encore de ton énorme patience !

PS : Ton code pour ecrire dans un fichier.. NUMÉRO 1.. Merci infiniment.. me reste ke la concanténation ^^
0
Guki
 
Pour utiliser les bibliothèques standard C++ compatible C il faut ajouter un "c" devant le nom de l'en-tête et supprimer l'extension. Les en-têtes C++ compatible C sont du type <cheader>.

Dans ton programme tu devrais écrire <cstring> au lieu de string et de même <cstdio>. De plus ta fonction main est typé int cependant tu ne renvoie aucun code d'erreur pour confirmer sa bonne exécution.

Tu peux essayer ceci:

#include <cstdio>
#include <cstring>

using namespace std;

int main(void)
{
	char s1[11] = "compil";
	char s2[5] = "ateur";

	strncat(s1, s2, 3);
	scanf("s1 = %s", &s1);
	scanf("s2 = %s, &s2);
	printf("%s\n", s1);
	return EXIT_SUCCESS;
}
0
Lord_Vking
 
it works... Merci :)
0