Pages : 1
#1 Le 07/04/2007, à 20: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, à 21: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, à 21: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 )
LOL
Sinon encore une petite interrogation: je voudrais choper le code ASCII d'un caractère (en fait passer de 'd' à 3 par exemple 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 ?
EDIT: res[7]='\0' ===> res[7]="\0"
Dernière modification par Shacamus (Le 07/04/2007, à 23:06)
Hors ligne
#4 Le 08/04/2007, à 09: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, à 13: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 et initialisé à '\0'...
Hors ligne
#6 Le 08/04/2007, à 14: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, à 14:45)
Hors ligne
#7 Le 08/04/2007, à 20:30
- Shacamus
Re : Quelques questions sur le C
vi finalement j'ai réussi , merci pour votre aide
Hors ligne
Pages : 1