J'essayais d'utiliser strncpy
puis strcpy
et vice versa, mais j'ai continué à recevoir une erreur de segmentation pendant l'exécution. Je pensais que c'était à cause d'une erreur logique dans les fonctions, mais je changeais de place et seul le premier s'exécutait.Erreur de segmentation lors de l'appel strcpy
#include <stdio.h>
#include <string.h>
int main(void)
{
char c = ' ', sentence[50], *pointer_to_string;
pointer_to_string = &sentence[0];
int index = 0;
printf("Please enter a sentence:");
while ((c = getchar()) != '\n')
{
sentence[index] = c;
index++;
}
sentence[index] = '\0';
char *string_copy1, *string_copy2;
strncpy(string_copy1, pointer_to_string, 5);
printf("strncpy(string_copy1, pointer_to_string, 5):\n");
printf("%s\n", string_copy1);
strcpy(string_copy2, pointer_to_string);
printf("strcpy(string_copy2, pointer_to_string):\n");
printf("%s\n", string_copy2);
}
Essayez de compiler avec 'valgrind -g' du drapeau et de l'utilisation tout en exécuter le programme:' valgrind/a.out' => vous obtiendrez plus d'informations – YaatSuka
'char * string_copy1, * string_copy2,' ne fonctionne pas. initialiser l'une ou l'autre de ces variables. Donc, aucun d'entre eux ne pointe sur un emplacement de mémoire valide. Ensuite, vous utilisez str (n) cpy pour écraser le contenu d'un tableau de caractères - c'est-à-dire une "chaîne" - mais le pointeur que vous lui donnez ne pointe pas sur un tel tableau. Un comportement si indéfini s'ensuit. – rici
Vous devez initialiser 'string_copy1' et' string_copy2; 'avant de les utiliser. Utilisation de malloc Découvrez comment ici http://fr.cppreference.com/w/c/memory/malloc –