bonjour a toute et a tous ,
je suis entrain de tapper un programme en C qui concatene au maximum n caractere d’une chaine T sutr une chaine S.
seulement les resultat que j’obtient sont faux et le compilateur me renvoie toujours le meme avertissement “pas de retour chariot a la fin du fichier”
quand j’execute et que j’essais de concatener par exemple 2 caracter de la chaine “azer” avec la chaine “azerty” , normaleent ca devrait m’afficher “azertyaz” or la ca me marque
azerty
az?D
il y donc un probleme , est ce ue vous pourriez y jeter un coup d’oeil , mon programme est la : ici
Pour le retour chariot, c’est simple : ajoute un saut de ligne en fin de fichier.
Cadeau : (par contre les fautes d’orthographes sont légions)
void strncat(char* s, char* t, int n) {
while (*s != '\0' ) ++s;
for (unsigned int i = 0; i < n && *t != '\0'; ++i, ++t, ++s) {
*s = *t;
}
*s = '\0';
}
Je n’ai pas testé, et ce n’est pas safe (tu peux facilement taper en dehors de la zone allouée à s)
Par contre : ne jamais JAMAIS mettre une taille dans un tableau passé en paramètre à une fonction (comme tu fais). Cela veut dire que tu va créer un tableau 1000 caractères plutôt que passer un pointeur vers un tableau.
gcolmar, dans ta fonction strncat, quand tu parcours la String S pour en trouver la fin, tu fais une comparaison avec ‘\0’.
Or, fgets te retourne une chaine terminee pas new-line (’\n’) et non pas null-terminated (’\0’).
j’aurais juste encore une toute petite fonction qui deconne riena voir avec le programme au dessus.
cette fonction fait la saisie des coordonnees d’un point et de sa masse j’utilise une structure
struct complexe
{
double Re;
double Im;
}
la fonction c’est ca
int saisiesysteme(struct complexe pts_syst[nb_max_points] , int masses_syst[nb_max_points])
{
int i =0 , n = 0;
printf("\nveuillez entrer le nombre de points ( 2<n<25) s'il vous plait.\n");
scanf("%i" , &n);
while((n<=2)||(n>=25))
{
printf("\nveuillez entrer le nombre de points ( 2<n<25) s'il vous plait.\n");
scanf("%i" , &n);
}
for(i = 0; i<n; i++)
{
printf("veuillez saisir les coordoonnees du point partie Re , Im puis la masse\n");
scanf("%d %d %i" , pts_syst[i].Re , pts_syst[i].Im ,masses_syst[i]);
};
return n;
};
j’obtiens une erreur de segmentation au niveau du dernier scanf, c la premiere fois que j’utilisais des structure alors j’ai p’tetre fait une erreur quelque part. est ce que pourriez juste regarder encore cette fonction.
cette fonction fait partie d’un prog plus grand
merci