Urgent : utilisation de gets fgets scanf ....

Fermé
Jenny - 14 oct. 2004 à 16:15
 Jenny - 14 oct. 2004 à 18:37
J'ai un programme de stéganographie a finir pour demain après midi, et je vien de me rendre compte que faire un scanf pour demander le texte a l'utilisateur ne fonctionne pas.
Je pense qu'il faut utiliser gets ou fgets mais je n'arrive pas a déclarer ma variable, voila se que je pensai écrire (et qui est faux) :

printf ("Entrer votre texte : ");
char *texte[400];
fgets("%s",400 texte);


Est ce vraiment %s, ...

Merci de m'aider

2 réponses

AIDEZ MOI SIL VOUS PLAIT : jai mis beaucoup de code mais il n'y a que la fonction stegano_codage qui me pose problème pour le moment!!!

je vous fai passer mon "module" de stegano qui est appelé par mon main :

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

#ifndef BMP_H
#define BMP_H
#include "bmp.h"
#endif

/**** Projet de stéganographie Maud BESSON (licence informatique octobre 2004)*/
#define N 999999
struct SVect {
int tab[N];
int taille;
int nb_element;
};

typedef struct SVect vect;

int init_vect (vect T, int taille){
if(N < taille) return 0;
T.taille = N;
T.nb_element = 0;
return 1;
}



int ajoute_int (vect T, int element){

T.tab[T.nb_element] = element;
T.nb_element ++;
if ( T.nb_element == T.taille){
return 0;
}
return 1;
}


int passage_binaire (int x){
int r;
int z = 1;
int b = 0;

while (x > 0){
r = x % 2;
x = x / 2;
b = b + (r * z);
}
return b;
}


int codage_char(char c){
int x = 0;
if (c >= 'a' && c <= 'z'){
x = c - 'a'; /* codage des minuscules*/
}
else{
if( c >= 'A' && c <= 'Z'){
x = c - 'A' + 26; /*codage des majuscules*/
}
else{ /* codage des caractères spéciaux*/
if(c == '.') x = 53;
if(c == ',') x = 54;
if(c == ';') x = 55;
if(c == '?') x = 56;
if(c == '!') x = 57;
if(c == ' ') x = 58;
if(c == '(') x = 59;
if(c == ')') x = 60;
}
}
x = passage_binaire (x);
return x;
}


/* insert le texte dans un vecteur */

vect trans_string_vect (char *texte){
vect code;
init_vect (code, ((strlen (texte)) * 9));

int j, r;
int i = 0;
int a;

while( i <= code.taille){

j = codage_char(texte[i]); /*j sera déja en binaire */

for(a = 0; a<=6; a++){

if(j != 0){
r = j % 10;
j = j / 10;
ajoute_int(code, r);
}
else{
ajoute_int(code, 0); /*** un caractère est codé par 6 chiffres je complète donc avec des zéro ***/
}
}
}
return code;
}


/* Calcul la moyenne des constante rouge des pixel entourant celui codé */
int moyenne_pixel_rouge (bitmap b1, int i, int j){
int i2 = i -1;
int j2 = j -1;
int mrouge = 0;

while( i2 <= i+1){
if (i2 == i){
mrouge = mrouge + getRPixel (b1, i, (j-1)) + getRPixel (b1, i,(j+1));
}
else{
while (j2 <= j+1){
mrouge = mrouge + getRPixel (b1, i2, j2);
j2 ++;
}
}
i2 ++;
j2 ++;
}
mrouge = mrouge / 8;
return mrouge;
}



/* Calcul la moyenne des constante vert des pixel entourant celui codé */
int moyenne_pixel_vert (bitmap b1, int i, int j){
int i2 = i -1;
int j2 = j -1;
int mvert = 0;

while( i2 <= i+1){
if (i2 == i){
mvert = mvert + getGPixel (b1, i, (j-1)) + getGPixel (b1, i,(j+1));
}
else{
while (j2 <= j+1){
mvert = mvert + getGPixel (b1, i2, j2);
j2 ++;
}
}
i2 ++;
j2 ++;
}
mvert = mvert / 8;
return mvert;
}

/* Calcul la moyenne des constante bleu des pixel entourant celui codé */
int moyenne_pixel_bleu (bitmap b1, int i, int j){
int i2 = i -1;
int j2 = j -1;
int mbleu = 0;

while( i2 <= i+1){
if (i2 == i){
mbleu = mbleu + getBPixel (b1, i, (j-1)) + getBPixel (b1, i,(j+1));
}
else{
while (j2 <= j+1){
mbleu = mbleu + getBPixel (b1, i2, j2);
j2 ++;
}
}
i2 ++;
j2 ++;
}
mbleu = mbleu / 8;
return mbleu;
}

/* fonction pour changer les valeur des pixel*/

bitmap codeimage (bitmap b1, bitmap b2, vect code, int i, int j){
int mrouge = moyenne_pixel_rouge (b1, i, j);
int mvert = moyenne_pixel_vert (b1, i, j);
int mbleu = moyenne_pixel_bleu (b1, i, j);
int nb = code.nb_element;


if (code.nb_element >= 3){
int r = code.tab[nb] + mrouge ;
int g = code.tab[nb - 1] + mvert;
int b = code.tab[nb - 2] + mbleu;
code.nb_element = nb - 3;

/* insertion ds nouvelle valeur*/
putRPixel (b2, i, j, r);
putGPixel (b2, i, j, g);
putBPixel (b2, i, j, b);
}
else {
if(code.nb_element == 2){
int r = code.tab[nb] + mrouge ;
int g = code.tab[nb - 1] + mvert;
int b = 2 + mbleu; /* ajoute 2 a la moyenne pour montrer que c'est la fin du texte */
putRPixel (b2, i, j, r);
putGPixel (b2, i, j, g);
putBPixel (b2, i, j, b);

}
else{
if (code.nb_element == 1){
int r = code.tab[nb] + mrouge;
int g = 2 + mvert; /* ajoute 2 a la moyenne pour montrer que c'est la fin du texte */
putRPixel (b2, i, j, r);
putGPixel (b2, i, j, g);
}
}
}
return b2;
}

/****** vérifier pour ajouté deux quan on fini par un multipe de 3 ***/



bitmap stegano_codage (bitmap b1, int h, int w){

texte = (char*) malloc (h*w*(sizeof(char))); */
printf ("Entrer votre texte : ");
char texte[400];
fgets(texte, 1000, stdin);


/* création d'un tableau contenant le texte en code binaire ***/
vect code;

trans_string_vect (texte);

bitmap b2; /* nouvelle bitmap */

/** codage de l'image ***/

int i = 1;
int j = 1;
int s = 1; /** indique si on parcour l'image de bas en haut (1) ou de haut en bas (0) */

while (i < (h - 2)){
if (s == 1){
while (j < h-2){

b2 = codeimage (b1, b2, code, i, j);
j = j+3;
}
i = i + 3;
j = h - 2;
s = 0;
}
else{
while (j > 1){

b2 = codeimage (b1, b2, code, i, j);
j = j - 3;
}
i = i + 3;
j = 1;
s = 1;
}
}

return b1;
}
1
[GORe]Donald Messages postés 8 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 9 janvier 2007
14 oct. 2004 à 16:55
as tu bien ecri

#include <stdio.h>

fgets(NomVariable,TailleVariable-1,stdin);

??

stdin est important!!

sinon pour une chaine de caractère je ne peu malheuresement pas t'aider!!

désolé
0