Incompatible type of assigment langage C

Moderator: Mod

Incompatible type of assigment langage C

Postby MYRANOVA » Sun Jun 13, 2010 1:51 am

Jessai de créer un programme dont si j'envoi AA ca me renvoi BB mais g une erreur : incompatible type of assigment à la ligne de " chaineDecrypte = rechercherTout(alphabet,chaine,ecart);"

autre chose : peut etre que l'algorithme est mal fait aussi, donc si ca affiche un mauvais résultat, ne me donnez pas un autre code, j'aimerai juste que vous corrigez l'erreur Merci d'avance ! .

[code:1:fb9e050163]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *rechercherTout(const char *alphabetEnvoye,char *chaineAdecrypter, int ecartChoisi);

int main()
{
char chaineDecrypte[] = {0};
int ecart = 0;
char alphabet[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char chaine[] = {0};
printf("Salut Veuillez entrer une chaine de caracteres s'il vous plait : ");
scanf("%s", chaine);
printf("Quel ecart ? : ");
scanf("%d", &ecart);
chaineDecrypte = rechercherTout(alphabet,chaine,ecart);
printf("La modification est : ", chaineDecrypte);

}

char *rechercherTout(const char *alphabetEnvoye,char *chaineAdecrypter, int ecartChoisi){

char new_chaine[] = {0};
int i = 0;
do{
new_chaine[i] = strchr(alphabetEnvoye,chaineAdecrypter[i+ecartChoisi]);
i++;
} while(chaineAdecrypter[i] != '\0');
return new_chaine;
}
[/code:1:fb9e050163][/code]
MYRANOVA
Projets
 
Posts: 28
Joined: Fri Apr 02, 2010 4:06 am

Postby ROOTBSD » Sun Jun 13, 2010 12:08 pm

Hello,

Pour que ton code compile il faut remplacer
[code:1:24698052fd]
char chaineDecrypte[] = {0};
[/code:1:24698052fd]
par
[code:1:24698052fd]
char *chaineDecrypte;
[/code:1:24698052fd]

Par contre tu auras un tas d'autre probleme dans ton code :wink:
Comme tu as l'air de voulloir chercher je te laisse regarder un peu... Mais je pressens un post bientot.
User avatar
ROOTBSD
 
Posts: 191
Joined: Mon Dec 22, 2008 4:09 pm

Postby MYRANOVA » Sun Jun 13, 2010 2:16 pm

Merci mais pourquoi ?
MYRANOVA
Projets
 
Posts: 28
Joined: Fri Apr 02, 2010 4:06 am

Postby ST4NL3Y » Tue Jul 26, 2011 10:30 am

C'est assez logique enfaite, tu fais une allocation d'un tableau qui n'a pas de taille définie, mais tu essaye d'accéder à des cases mémoires qui n'ont pas été allouée.

Lorsque tu fais :

[code:1:6b717ee2da]char Tableau[] = {0};[/code:1:6b717ee2da]

Tu indique au compilateur qu'il doit allouer "0"*1octets(char) en mémoire.

La solution est soit de faire une tableau statique avec une taille max définie :

[code:1:6b717ee2da]char Tableau[100] = {0}; // Allant de 0 a 99[/code:1:6b717ee2da]

Soit tu fais un tableau dynamique qui utilise l'allocation dynamique, soit les pointeurs :
[code:1:6b717ee2da]
char *tableau;
tableau = malloc(sizeof(char) * x); // avec x un entier [/code:1:6b717ee2da]

Ou alors tu passe par le C++ qui te permet d’accéder au template vector :[code:1:6b717ee2da]

#include <vector>

int main()
{
vector<char> Tableau;

for(int i =0; i<100; i++) Tableau.push_back('c'); // ce qui te permet de te liberer de la contrainte de connaitre la taille du tableau à l'avance

return 0;
}[/code:1:6b717ee2da]

Voilà en espérant t'avoir aidé !
ST4NL3Y
Projets
 
Posts: 10
Joined: Tue Jul 26, 2011 10:13 am

Postby Manu404 » Tue Jul 26, 2011 1:18 pm

Déterrage de topic vieux d'un an... a éviter :wink:
User avatar
Manu404
 
Posts: 2219
Joined: Tue Feb 26, 2008 3:44 pm
Location: ::1:


Return to C/C++

Who is online

Users browsing this forum: No registered users and 3 guests

cron