Information fprintf

Utilisateur anonyme - 12 mai 2006 à 11:25
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 - 12 mai 2006 à 11:43
Quand j'ecrie dans mon fichier avec la commande:







fprintf(fichier, "%s;%d", sms_a_envoyer,num_send);








ca me fait un retour à la ligne entre sms_a_envoyer et num_send, comment l'eviter?
j'ai ajouté un "\r" entre les deux mais c'est pareil
A voir également:

4 réponses

turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
12 mai 2006 à 11:31
A mon avis c'est dans ton sms_a_envoyer qu'il y a un retour chariot.
Essaye de le supprimer avant d'envoyer.

TuRn3r
0
Utilisateur anonyme
12 mai 2006 à 11:34
voici mon code complet :

void rediger_sms(int *numero_tel)
{
//Initialisation
char sms_a_envoyer[MAX_SMS_CHAR] ;
int longueurChaine = 0;
FILE* fichier = NULL;
char chaine[1000] = ""; // Chaîne vide de taille 1000
char num_select[10];
int num_send;
// Fin Init


// Ecriture du SMS

puts("Veuillez taper le SMS que vous souhaitez envoyer(160 caracteres maximum)\n");
clean();
fgets(sms_a_envoyer,MAX_SMS_CHAR, stdin);
printf("\nVous souhaitez envoyer ce message : %s",sms_a_envoyer);

// Fin Ecriture SMS et enregistrement dans la variable sms_a_envoyer

puts("Indiquez le numero de téléphone de la personne a qui vous envoyez le message");
scanf("%d",&num_send);

longueurChaine = strlen(sms_a_envoyer);
printf("\nLongueur de la chaine : %d\n",longueurChaine);


// On enregistre dans un fichier (serveur de SMS) le SMS à envoyer

sprintf(num_select, "%d.txt", num_send); // On crée le fichier avec le numero de telephone

fichier = fopen(num_select, "w");

// On ecrit dans le fichier
if (fichier != NULL) // Test pour l'ouverture du fichier
{

fprintf(fichier,"%s\v%d",sms_a_envoyer,num_send);

fclose(fichier); // On ferme le fichier

}

// On lit le contenu du fichier
fichier = fopen(num_select, "r");
while (fgets(chaine, MAX_SMS_CHAR , fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
{
printf("\nCHAINE : %s", chaine); // On affiche la chaîne qu'on vient de lire
}
fclose(fichier);


puts("\n");

}
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
12 mai 2006 à 11:41
C'est bien ce que je disai:
fgets(sms_a_envoyer,MAX_SMS_CHAR, stdin);

man de fgets :
fgets() lit au plus size - 1 caractères depuis stream et les place dans le buffer pointé par s. La lecture s'arrête après EOF ou un retour-chariot. Si un retour-chariot (newline) est lu, il est placé dans le buffer. Un caractère nul '\0' est placé la fin de la ligne.

Il faut donc que tu l'enleve avant d'envoyer.

Essaye :
char sms_a_envoyer[MAX_SMS_CHAR] ;
char tmp[MAX_SMS_CHAR] ;
...

// Ecriture du SMS

puts("Veuillez taper le SMS que vous souhaitez envoyer(160 caracteres maximum)\n");
clean();
fgets(tmp,MAX_SMS_CHAR, stdin);
printf("\nVous souhaitez envoyer ce message : %s",sms_a_envoyer);
...
strncpy(sms_a_envoyer,tmp,sizeof(strlen(tmp)-1));

TuRn3r
0
turnerom Messages postés 492 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 12 janvier 2012 1
12 mai 2006 à 11:43
A ecrire trop vite, on met de la merde :

char sms_a_envoyer[MAX_SMS_CHAR] ;
char tmp[MAX_SMS_CHAR] ;
...

// Ecriture du SMS

puts("Veuillez taper le SMS que vous souhaitez envoyer(160 caracteres maximum)\n");
clean();
fgets(tmp,MAX_SMS_CHAR, stdin);

...
strncpy(sms_a_envoyer,tmp,strlen(tmp)-1);
printf("\nVous souhaitez envoyer ce message : %s",sms_a_envoyer);

TuRn3r
0
Rejoignez-nous