Langage C

Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
Bonjours / Bonsoir à vous tous / toutes

Je suis débutant dans la programmation en langage C
et je voudrai savoir si quelqu'un pourrait m'aider ?

Mon but de mon "exercice" est de changer un caractère ( 'a') par un autre ('b')

Si vous pourriez m'indiquer quelque code ou votre avis, ou un truc qui pourrai me guider d'avantage.

Merci à vous

Brohs !


j'ai fais un code, mais celui le change comme je le souhaite, mais pas dans mon fichier texte, je ne sais pas comment faire pour que sa soit dans le fichier .txt, mais pour changer dans un fichier ce n'est pas :
int fputc(int caractere, FILE* pointeurSurFichier); ?
ou
int fputs(const char* chaine, FILE* pointeurSurFichier); ?
je vous fourni le code :

#include <string.h>
#include <stdio.h>

int CharToChar(char sString[], char sResult[], char cChar1, char cChar2)
{
int i = 0;
int iLength = strlen(sString);
int iResult = 0;

for(i = 0; i < iLength; i++)
{
sResult[i] = sString[i];

if(sString[i] == cChar1)
{
sResult[i] = cChar2;
iResult = 1;
}
}

return iResult;
}

{
char sString[256] = "aazz4a8s91qs78s81t4rg8g15d4189s4aadz5dd94r1rz8a8";
char cChar1 = 'a';
char cChar2 = 'b';
char sResult[256] = "";
int iResult = 0;

printf("Phrase de base: %s\n", sString);

iResult = CharToChar(sString, sResult, cChar1, cChar2);

if(iResult == 0)
{
printf("Rien n'a change !\n");
}

printf("Nouvelle phrase: %s\n", sResult);

return 0;
}
A voir également:

7 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

'a' est un int. Si tu lui ajoutes 1, tu obtiens la valeur 'b'.
Donc, tu as juste à faire :
int car='a';
car++;
printf("%c\n",car);
car vaudra 'b'.

Cdlt,
2
periplasme Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   53
 
bonsoir !
transformer un caractere ... ok, mais de quelle source ? dans une variable (tableau de char) ou dans un fichier texte ?
1
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Dans un fichier Texte,
mais en programment un prog qui changera le caractère 'a' en caractère 'b'
0
julian78
 
salut,
moi je ne jure que par http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html c'est trop énnnnnooooorrrmmme
1
periplasme Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   53
 
le site du Zéro ... c'est bien pour une initiation ... mais pas pour apprendre a programmer.

c'est pas avec ça que tu verra des concept plus "poussé" genre liste chinée, arbre binaire et autre . c'est pas parce que au chapitre 3 tu fais de l'interface graphique que t'as tout pigé du C en lui même ... loin de la !

(je revois d'ailleurs le premier exercice : le nombre mystère ... , avec le recul ... c'est juste horrible !)
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
je sais, j'ai appris le C sur le site du zéro, j'ai tous appris, mais je ne voie pas comment faire.
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Y'a du monde pour m'aider ou pas ?
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Plus personne pour me guider ?
0
Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,
fiddy vous a montré comment faire en C pour passer de la lettre "a" à la lettre "b" simplement en incrémentant sa valeur. Pour une chaine on prend le caractère actuel et on fait un test
si x == 'a'
alors
x++
et la valeur de 'a' +1 = 'b' donc 'a' devient 'b'. Exemple :
char sString[256] = "aazz4a8s91qs78s81t4rg8g15d4189s4aadz5dd94r1rz8a8";
int i; //pour la boucle
for(i=0;sString[i];i++){//on boucle jusqu'au 0 de fin de chaine tant que sString[i] est "vrai"
if(sString[i] == 'a'){//si le caractère actuel est un 'a'
sString[i]++;//on incrémente la valeur 'a'
}
}
et voilà tout les caractère 'a' de la chaîne sString sont maintenant des 'b'

periplasme a aussi montré une autre façon de faire en remplaçant la valeur 'a' par la la valeur 'b' :
char sString[256] = "aazz4a8s91qs78s81t4rg8g15d4189s4aadz5dd94r1rz8a8";
int i; //pour la boucle
for(i=0;sString[i];i++){//on boucle jusqu'au 0 de fin de chaine
if(sString[i] == 'a'){//si le caractère actuel est un 'a'
sString[i]='b';//on remplace la valeur 'a' par 'b'
}
}

Le principe est le même avec les données d'un fichier, on charge soit 1 caractère soit plusieurs dans un buffer comme sString et on test puis on remplace soit en écrivant à l'emplacement (dans ce cas on déplace le curseur à l'emplacement prévu) soit en créant un nouveau fichier (une copie avec les données modifiées) soit.. doit y avoir un tas de possibilités bref
en voici une très simple :
#include <stdio.h>

int main(void)/* la fonction principale sans arguments, donc un programme sans paramètres */
  {
    FILE *fichier;//on créé un pointeur de fichier
    char c;/* un char pour garder le caractère lu */
    fichier=fopen("plop.txt","r+");/* ouvre un fichier en lecture écriture */
    while((c=fgetc(fichier))!=EOF){/* boucle récupère le caractère tant qu'on est pas à la fin du fichier, EOF "end of file" */
        if(c=='a'){/* compare si le caractère est un 'a' */
            fseek(fichier,-1,SEEK_CUR);/* si oui on repositionne le curseur une case AVANT, car le fgetc qui lit s'est déjà décalé à la case suivante */
            fputc('b',fichier);/* on remplace à l'emplacement du curseur (donc de la lettre 'a') la lettre 'a' par la lettre 'b', on peut aussi faire fputc(++c,fichier) */
        }
    }
    fclose(fichier);/* fermeture du fichier apres utilisation */
    return 0;/* le main retourne 0 s'il ne s'est pas interrompu avant (pas d'erreur) */
  }

Il n'y a aucune vérification d'erreur dans le code pour l'ouverture du fichier ni pour la lecture ou écriture, donc informez vous la dessus ça peut aider
0
periplasme Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   53
 
en gros, il faut ouvrir le fichier

FILE *f
f = fopen("fichier_a_parcourir", "w");
pour chaque caractere
si caractere = 'a'
alors caractere = 'b'
fclose(f);

je me souviens plus des fonction exacts et leur fonctionnement, fscanf et fprintf etc etc ... reste plus qu'a chercher avec ça ...
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Personne pour repondre en Langage C ?
0
Chris 94 Messages postés 54087 Date d'inscription   Statut Modérateur Dernière intervention   7 344
 
Bonsoir,

Il aurait été préférable de poster su le forum "Programmation"... Je te téléporte illico.

Cordialement.

PS : A tout hasard, j'attire ton attention sur :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
OK, d'accord, merci !
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à vous periplasme & hxyp !!
0
Brohs Messages postés 25 Date d'inscription   Statut Membre Dernière intervention  
 
Faut que je règles une petite erreur et ces bon.

error: expected identifier or `(' before `{' token
0