0
votes

Coincé dans la boucle de swap du pointeur en c

J'essaie d'apprendre C en ce moment et il y a un exemple qui ne me permet pas d'utiliser string.h code> ou d'autres fonctions.

Par exemple, j'ai besoin d'inverser la chaîne avec Pointeurs. P>

Mais quand je échange, il est coincé. P>

#include <stdio.h>

void reverseCopy( char *, char *, int);

int main(){
    char *word1 = "Welcome to the C programming";
    char word2[50];
    int i,count;

    for(i=0;i<50;i++){
        if(word1[i]=='\0') break;
        count++;
    }

    reverseCopy(word1,word2,count);

    return 0;
}

void reverseCopy( char * g1, char * g2 ,int lenght){
    g2=g1;
    char temp;
    int i;
    int j=temp-1;

    for(i=0;i<j/2;i++){
        temp=*(g2+i);
        *(g2+i)=*(g2+j-i);
        *(g2+j-i)=temp;
    }

    puts(g2);
}


3 commentaires

Pensez un peu à ce que l'assignation g2 = g1 fait. Pensez également à la raison pour laquelle il est recommandé d'utiliser const char * pour pointer vers des littéraux à chaîne (votre livre de texte doit avoir cette information).


J'ai résolu votre problème que vous pouvez vérifier la réponse


@Mohamedkaram, il est très probable que Bahadir soit un étudiant et c'est une mission qu'ils devraient résoudre par eux-mêmes. Par conséquent, il est préférable de suggérer des problèmes et (éventuellement) suggérer des corrections. Cela n'aide pas à Bahadir de leur donner une réponse complète et de travail


3 Réponses :


0
votes

Je pense que vous obtenez le problème BCS de INT J = TEMP-1 tandis que TEMP est un caractère, également l'affectation de g2 = g1 vous causait un problème < p> Je peux vous suggérer le suivant: xxx

Main: xxx

}

sortie: xxx


0 commentaires

0
votes

Le code posté, lorsque vous exécutez via le compilateur, vous trouverez:

Compilation finished successfully.


0 commentaires

1
votes

Une telle fonction de chaîne qui copie une chaîne dans l'ordre inverse vers un tableau de caractères ne doit avoir que deux paramètres: le tableau de caractères de destination et la chaîne source. Il est supposé que la matrice de caractères de destination est suffisamment grande pour accueillir la chaîne source.

comme pour votre fonction Reversecopy code> Définition, puis même la première instruction de la fonction p> xxx

rend la fonction insensée, car après cette instruction, l'adresse de la matrice de caractères de destination est perdue. P>

Cette affectation ne copie pas la chaîne pointée par g1 code> dans le tableau de caractères pointé par G2 code> lorsque vous pensez évidemment. Cette affectation rend les pointeurs g1 code> et g2 code> pour pointer sur la même chaîne du littéral à chaîne transmis à la fonction sous forme d'argument. P>

maintenant Après cette affectation, vous essayez d'inverser le littéral de la chaîne qui entraîne un comportement indéfini. P>

En outre, vous utilisez des variables non initialisées telles que p> xxx pré>

si la fonction devrait Soyez écrit en utilisant uniquement des pointeurs, vous ne devez pas utiliser une variable entière i code> qui joue le rôle d'un index. p>

et la fonction ne doit rien produire. C'est l'appelant de la fonction qui décidera de produire quoi que ce soit de produire quoi que ce soit. P>

ci-dessous Il existe un programme démonstratif qui montre comment la fonction peut être implémentée en utilisant uniquement des pointeurs. P>

Welcome to the C programming
gnimmargorp C eht ot emocleW


0 commentaires