0
votes

Créer une fonction qui trie 2 cordes triées données

donné deux triés , j'ai besoin de fusionner ces chaînes à une chaîne et de le faire trier. Trier par la valeur ASCII . par exemple: acdty , berz => abcderyz

mon code: xxx

le premier Le problème est avec tailleOf (a) . Si je code: printf ("% d", taille de (a)); IT imprime 8 , alors que je m'attends à imprimer 5 .

c

7 commentaires

Char A [] Comme paramètre de fonction est ajusté à Char * A SO Tailleof (a) donne "Taille du pointeur" par opposition à "Taille de tableau ".


Char * C = (Char *) MALLOC (SHLEN (A) + SHLEN (B)); Vous devrez ajouter 1 pour le caractère Null. Et ne pas lancer la valeur de retour de malloc in c


Est-ce que cela répond à votre question? Comment trouver le "Tailleof" (un pointeur pointant vers un tableau)?


@ Dandan78 J'ai utilisé Slen .. mais toujours .. il y a un problème comme décrit


Tu es chanceux. Il pourrait Impression "Segfault".


S'il vous plaît ne modifiez pas le code dans votre question pour éliminer les problèmes. Cela rend très difficile pour les personnes qui viennent plus tard et lisent la question et les commentaires pour comprendre ce qui se passe réellement. J'ai retourné à la dernière version de la question qui contenait taille de . Merci.


Tal ROFE, donné «Trier par la valeur ASCII», que devraient-ils arriver lorsque les valeurs sont en dehors de la gamme ASCII 0-127?


4 Réponses :


1
votes

Lorsque vous travaillez avec des chaînes en C, vous voudrez utiliser strallen () pour voir combien de temps ils sont, pas Tailleof (qui vous dit simplement quelle est la taille de la taille. d'un pointeur est).

Notez également que Tailleof (Char) est 1 par définition, il n'est donc pas nécessaire de dire " * Tailleof (char) " Dans votre MALLOC


1 commentaires

Taille de vous indique la taille de l'objet ou du type, en fonction de son opérande.



1
votes

Tailleof (a) retournera la taille d'un pointeur dans ce cas qui sera de 8 octets si vous compilez pour 64 architecture. Vous devez transmettre la taille de chaque chaîne ou boucler les caractères de chaîne jusqu'à atteindre le '\ 0' si la chaîne est désormais terminée.


1 commentaires

A string est désormais terminé par la définition par définition .



0
votes

Vous devez envisager d'utiliser qsort : xxx


2 commentaires

Vrai, mais cela augmente la complexité du temps d'exécution de O (n) à O (n log n).


Comme grand-mère Roseannadanna a dit une fois dit: "C'est toujours quelque chose!" :-)



1
votes

L'expression i contrôle du pour boucle est le principal coupable. La version corrigée de votre programme pourrait être: (J'ai édité le code un bit) xxx

la valeur de retour de malloc doit être vérifié contre NULL dans un véritable programme. En outre, il y a une fuite de mémoire (facile à réparer).


2 commentaires

Ne fonctionne pas avec pairesDarrays ("az", "ks") . Il renvoie aks au lieu de aksz


@ Chux-RestarStaTemonica copié du code d'origine. Corrigé maintenant. Je n'utiliserais pas moi-même des index; J'utiliserais juste des pointeurs A et b , mais je ne voulais pas modifier beaucoup le code d'origine.