J'ai un problème avec mon petit programme C. Peut-être pourriez-vous m'aider.Erreur de segmentation lors de l'écriture de char sur l'adresse char *
char* shiftujVzorku(char* text, char* pattern, int offset){
char* pom = text;
int size = 0;
int index = 0;
while(*(text + size) != '\0'){
size++;
}
while(*(pom + index) != '\0'){
if(overVzorku(pom + index, pattern)){
while(*pattern != '\0'){
//vyment *pom s *pom + offset
if(pom + index + offset < text + size){
char x = *(pom + index + offset);
char y = *(pom + index);
int adresa = *(pom + index + offset);
*(pom + index + offset) = y; // SEGMENTATION FAULT
*(pom + index) = x;
//*pom = *pom - *(pom + offset);
//*(pom + offset) = *(pom + offset) + *pom;
//*pom = *(pom + offset) - *pom;
}
else{
*pom = *pom - *(pom + offset - size);
*(pom + offset - size) = *(pom + offset - size) + *pom;
*pom = *(pom + offset - size) - *pom;
}
pattern++;
}
break;
}
index++;
}
return text;
}
N'est pas important ce que fait le programme. Peut-être qu'il y a beaucoup de bugs. Mais, pourquoi ai-je une DÉFAUT DE SEGMENTATION (pour la destination voir le code) sur cette ligne? Je suis, en essayant d'écrire de la valeur de char à l'espace mémoire, avec l'aide de l'adresse "pom + offset + index". Merci pour tout utile. :)
Peut-être que l'appelant ne passe pas dans un pointeur vers la mémoire en lecture seule. Peut-être que l'appelant ne passe pas dans un pointeur vers * suffisamment * de mémoire en lecture seule. Qui sait? –
ce code me fait mal aux yeux quand je le lis. Je commencerais par casser le code en parties logiques, les mettre dans des fonctions séparées, puis vérifier à nouveau. – stijn
Vous pouvez utiliser un débogueur, comme gdb pour analyser le problème. Je pense qu'il est plus important pour vous d'apprendre comment résoudre ces problèmes que de recevoir une réponse de notre part. Je –