577804 membres | 20490 connectés | 3593 questions/jour | Taux de réponse: 86.47% | Jeudi 10 janvier 2008 - 13:43:25 | Mot de passe oublié ? |
|
|
|
langage C - probleme avec type char par Jackho03 | samedi 6 octobre 2007 à 21:14:02 |
#include <stdio.h> int main( void ) { char var; int taille_entete_N2; printf("\n Choisissez Ethernet (E) ou FrameRelay (F)\n"); scanf ("%c", &var); printf("chaine de caractere : %c",var); if (var = 'E') { taille_entete_N2 = 28; } if (var = 'F') { taille_entete_N2 = 6; } printf("\n taille : %d",taille_entete_N2); }
Choisissez Ethernet (E) ou FrameRelay (F) Ethernet //correspond au scanf chaine de caractere : E taille : 6
Configuration: Windows Vista Firefox 2.0.0.721 message(s) posté(s) depuis le vendredi 9 février 2007
|
|
if (var = 'F') donc ca devient if (var == 'F') assez stupide ..... Sinon j'ai un autre soucis : int main( void ) { char data[2][2] = { {'A','Ethe'}, {'B','Fram'} }; printf( "\t%c \t%c\n", data[0][0],data[0][1] ); printf( "\t%c \t%c\n", data[1][0],data[1][1] ); } Je veux donc l'afficher sous forme de tableau mais voici ce qu'il m'affiche : A e B m Il me prend la derniere lettre du mot ! De plus si j'essaye de mettre le mot Ethernet a la place de Ethe donc : char data[2][2] = { {'A','Ethernet'}, {'B','FrameRelay'} }; il me met une erreur "illegal caracter constant". Que dois-je faire pour résoudre ces 2 problemes ??? Merci21 message(s) posté(s) depuis le vendredi 9 février 2007 |
|
#include<stdio.h> int main (void) { char *data [4] = { "A", "Ethernet", "B", "Fram" }; printf ("\t%c \t%c\n", **data, **(data+1)); printf ("\t%c \t%c\n", **(data+2), **(data+3)); return 0; } lami20j8534 message(s) posté(s) depuis le dimanche 14 novembre 2004 c'est sympa d'être important, mais c'est plus important d'être sympa. |
|
Ce que tu peux faire c'est une structure. Dès qu'une structure de donnée devient un peu compliquée c'est la bonne façon d'encapsuler l'information. Par exemple dans ton cas ta structure se compose de deux caractères ('A', 'B') qu'on va stocker dans les champs car1 et car2, et de deux chaînes ("Ethernet" et "FrameRelay") qu'on va stocker dans str1 et str2. Je suppose dans le code suivant que tu connais les notions suivantes en C: - les structures - les allocations mémoire (malloc) #include <stdio.h> #include <string.h> #include <stdlib.h> // Une structure permet de regrouper un ensemble d'attribut // dans un même type. struct data_t{ char car1; char car2; char *str1; char *str2; }; // Cette fonction alloue en mémoire une structure data_t // et initialise ses attributs. Qui dit allocation (malloc) // dit désallocation (free) le jour où on aura plus besoin de // ce qu'on a créé en mémoire. Ce rôle sera assuré par la // fonction del_data struct data_t * new_data(char c1,char c2,const char *s1,const char *s2){ struct data_t *d = (struct data_t *)malloc(sizeof(struct data_t)); d->car1 = c1; d->car2 = c2; d->str1 = (char *)malloc(strlen(s1)); d->str2 = (char *)malloc(strlen(s2)); strcpy(d->str1,s1); strcpy(d->str2,s2); return d; } // Ecrit le contenu de la structure void write_data(const struct data_t *d){ printf("%c\t%s\n",d->car1,d->str1); printf("%c\t%s\n",d->car2,d->str2); } // Efface la structure de la mémoire void del_data(struct data_t * d){ free(d->str1); free(d->str2); free(d); } int main(){ struct data_t *d = new_data('A','B',"Ethernet","FrameRelay"); write_data(d); del_data(d); return 0; } Sous linux quand tu compiles et exécute le programme ça donne donc : (mando@aldur) (~) $ gcc -W -Wall plop.c (mando@aldur) (~) $ ./a.out A Ethernet B FrameRelay Si tu as besoin de précisions n'hésite pas ! Bonne chance7512 message(s) posté(s) depuis le jeudi 12 mai 2005 |
|
==> Lami20j : j'ai essayé mais pareil ca ne m'affiche que la premiere lettre du mot ! ==> mamiemando : ca marche impec ! Va falloir que je me remette dans tout ce qui est structure et malloc :P Donc en fait si je veux utiliser un tableau (pas une structure) il faudra que ce soit un tableau d'entier ! Mais si je souhaite y mettre des chaines de caracteres je dois passer par des structures !! Enfin bref un grand grand MERCI !! Ce que tu m'as écris là me servira beaucoup si je dois utiliser d'autres structures ! (tres bien commenté et clair !) bonne journée a vous tous ! Jackho |
|
mais ce ça que je voulais ;-) en revanche je ne savais pas ce que tu voulais. c'est toi qui voulais un caractère \t%c\n" Donc en fait si je veux utiliser un tableau (pas une structure) il faudra que ce soit un tableau d'entier ! pas obligé Mais si je souhaite y mettre des chaines de caracteres je dois passer par des structures !! Non Et voilà #include<stdio.h> int main (void) { char *data[4] = { "A", "Ethernet", "B", "Fram" }; printf ("\t%c \t%s\n", **data, *(data + 1)); printf ("\t%c \t%s\n", **(data + 2), *(data + 3)); return 0; }L'utilisation des structues c'est en fonction des besoins. L'utilisation des champs est très pratique et la lisibilité de ton programme est meilleure. lami20j8534 message(s) posté(s) depuis le dimanche 14 novembre 2004 c'est sympa d'être important, mais c'est plus important d'être sympa. |
|
27/12 03h01 | C/C++ Erreur de segmentation | Langage C |
14/09 10h42 | Critères de choix d'un langage/framework | Programmation |
21/07 11h53 | Comment débuter, quel langage? | Langages |
09/05 23h00 | Où trouver un compilateur C/C++ ? | Langage C |
11/04 13h03 | Planifier une sauvegarde de données | Sécurité |
24/08 01h03 | Création environnement OpenSSH-CHROOT | Linux |
05/05 16h31 | Utiliser des accents et autres caractères spéciaux | Programmation |
08/04 22h09 | Qu'est-ce qu'un fichier batch ? | MS-Dos |
16/04 19h26 | Mise en page en Langage C | Programmation | 19/04 18h04 | 7 |
01/04 16h29 | Modification d'un champs en langage C | Programmation | 07/04 21h02 | 6 |
05/03 19h08 | structure en langage C | Programmation | 05/03 19h56 | 1 |
15/07 22h05 | [langage C] char tout simple svp... | Programmation | 15/07 23h08 | 1 |
22/08 10h35 | [C] Type Byte? | Programmation | 22/08 17h18 | 4 |
30/03 09h35 | Langage C pointeurs, creation de liste. | Programmation | 08/04 00h34 | 12 |
02/06 15h16 | [C] int <--> char | Programmation | 02/06 16h14 | 6 |
30/12 17h09 | En language C : probleme de return de valeur | Programmation | 30/03 17h27 | 6 |
22/01 11h34 | [langage C] probleme sur allocation memoire | Programmation | 09/02 14h24 | 3 |
14/03 12h37 | [langage C] : projet à réaliser | Programmation | 03/09 13h44 | 3 |
Dev-C++ - Dev-C++ est un environnement de développement intégré (IDE) en C/C++. Son compilateur est basé sur Mingw de GCC, mais il... | Catégorie: C/C++ Licence: Freeware/gratuit | |
Visual Basic Express - Le langage de programmation Visual Basic est historiquement dans les gènes de la société Microsoft. Avec plus de 30.000... | Catégorie: Visual Basic Licence: Freeware/gratuit | |
TYPSoft FTP Serveur - TYPSoft FTP Serveur est un ftp serveur rapide et facile avec le support des commandes Standard de FTP, Interface propre et... | Catégorie: FTP Licence: Freeware/gratuit | |
DS Monkey Audio - Filtre APE - Le format MonkeysAudio (extension *.ape) est un format de compression audio lossless (sans pertes) permettant de réduire la... | Catégorie: Plugins audio Licence: Freeware/gratuit |
Kensington Comfort Type Keyboard | Catégorie: Clavier | Aucun avis Donnez votre opinion sur Kensington Comfort Type Keyboard Black | ||
PNY xD-Picture Card Type-M | Catégorie: Carte Mémoire / Clé USB | Aucun avis Donnez votre opinion sur PNY xD-Picture Card Type-M 2 Go | 46.99 € Webdistrib | |
Kensington Comfort Type Keyboard | Catégorie: Clavier | Aucun avis Donnez votre opinion sur Kensington Comfort Type Keyboard | ||
Sony Compact Vault CompactFlash | Catégorie: Carte Mémoire / Clé USB | Aucun avis Donnez votre opinion sur Sony Compact Vault CompactFlash Type II 5 Go | ||
PNY CompactFlash Type II | Catégorie: Carte Mémoire / Clé USB | Aucun avis Donnez votre opinion sur PNY CompactFlash Type II 1 Go | ||
PNY CompactFlash Type II | Catégorie: Carte Mémoire / Clé USB | Aucun avis Donnez votre opinion sur PNY CompactFlash Type II 256 Mo | ||
Hitachi Microdrive 3 Go | Catégorie: Carte Mémoire / Clé USB | Aucun avis Donnez votre opinion sur Hitachi Microdrive 3 Go CompactFlash Type II | ||
Circus Maximus : Chariot | Catégorie: Jeu vidéo Xbox | Aucun avis Donnez votre opinion sur Circus Maximus : Chariot Wars |