Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 07/04/2007, à 21:52

Shacamus

Quelques questions sur le C

Bonjour tous!

Voila j'ai quelques interrogations sur le C..

1. Pourquoi définit on des fois des "trucs" (désolé du terme  ^-^ mais c'est aussi clair que cela dans ma tête)
du genre

TYPEDEF STRUCT nom{
int ...
char val;
....
}*nom2;

à quoi sert le nom vu que d'apres énormément d'exemple on se sert presque toujours de nom2?
Nom est le nom de la structure?
Pourquoi typedef struct?

Typedef c'est pour déifinir un type, et typedef struct un type de genre 'structure'...
Comment definir un type? comme en java ?




Sinon autre probleme:
je voudrais concaténer n fois un caractère '+'
voila mon code:

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

int main()
{
  /* Concatener n fois */
  
  char result[7];
  int i=0,nb=6;
  
  while(i<nb)
   {
     strcat(result,"+"); //stocké dans result
     i++;
  }

  printf("Val finale %s", result);
  return 0;
}

J'ai aussi testé avec char *plus="+";ca affiche rien de plus :'(


Merci d avance....

Hors ligne

#2 Le 07/04/2007, à 22:06

Gari

Re : Quelques questions sur le C

Pour le deuxième point, c'est parce qu'il faut initialiser la chaine de caractère.

ajoute "result[0]='\0';" avant le while, ça devrait le faire. Tu peux aussi faire "strcpy(result, "");", je pense que ça devrait faire la même chose. Tu auras tes 6 "+" dans result, normalement.

Hors ligne

#3 Le 07/04/2007, à 22:21

Shacamus

Re : Quelques questions sur le C

Merci, ca marche...
Bizarre, j'avais testé avec char res[7]="\0"
mais ca plantait
(un petit core dumped smile )
LOL

Sinon encore une petite interrogation: je voudrais choper le code ASCII d'un caractère (en fait passer de 'd' à 3 par exemple big_smile suffit de faire scanf("%d",&val)
et val-='1' ?





EDIT 2: Y aurait il possibilité de le récupérer carrément?
Je dois coder une fonction int count(int x, int y...)
avec x en fait un caractère...


une méthode à laquelle j'ai pensé est  de modifier le prototype...
du genre (char x,int y)
puis apres
int xs=(int) x-'a'; //On chope le caractere ascii


Mais voila=>quand je déclare un appel à la fonction, ben faut toujours mettre 'b' si le caractère c'est b etc...
Il y a possibilité  de configurer cela ?


Seulement modifier le prototype, je crois pas que cela soit autorisé :'(

Quelqu'un aurait une solution miracle ? big_smile








EDIT: res[7]='\0' ===> res[7]="\0"

Dernière modification par Shacamus (Le 08/04/2007, à 00:06)

Hors ligne

#4 Le 08/04/2007, à 10:12

Gari

Re : Quelques questions sur le C

Juste un truc en passant : en C, un tableau de taille n est indicé de 0 à n-1.
Bref, ton tableau "char res[7]" va de res[0] à res[6] (ce qui fait bien 7 objets). Aucune surprise, donc, à ce que le programme plante lamentablement lorsque tu tentes de mettre quelque chose dans res[7], qui est un objet ne se trouvant pas dans le tableau, et pouvant donc contenir n'importe quoi (et si possible une info importante pour le système).

Hors ligne

#5 Le 08/04/2007, à 14:59

Shacamus

Re : Quelques questions sur le C

non j'ai défini char res[7]='\0'

cad que j'ai défini un tableau de 7 éléments indicé de 0 à 6 smile et initialisé à '\0'...

Hors ligne

#6 Le 08/04/2007, à 15:44

Watchwolf

Re : Quelques questions sur le C

- pour l'histoire de la structure.
En C un type structure se definit comme suit:
struct nom {....}, l'appelle a ce type se fera avec "struct nom". C'est un peu long, tu peut donc faire un "typedef  struct nom nom2" et ainsi utilisé nom2.

- pour l'histoire de de la valeur en entier d'un caractere. Essaye: int val = (int) ton_caractere.

- pour concatener tu peut aussi regarder du coté de strncat.

Dernière modification par Watchwolf (Le 08/04/2007, à 15:45)

Hors ligne

#7 Le 08/04/2007, à 21:30

Shacamus

Re : Quelques questions sur le C

vi finalement j'ai réussi , merci pour votre aide big_smile

Hors ligne