Pages : 1
#1 Le 05/02/2013, à 18:58
- Latsuj
Question de débutant C
Bonjour,
Avant de commencer, il faut savoir que je n'ai pas trop l'habitude du C. Je programme beaucoup plus en Java et la j'ai un problème de compression sur une chose.
Exemple de petit code;
#include <stdio.h>
int main()
{
int c;
while( (c = getchar()) != EOF)
putchar(c);
return 0;
}
Alors la chose qui me dérange est que le getchar accepte des lettres et que c accepte ces lettres. Or, on a defini que c est un int. Ayant l'habitude de java, je comprend pas comment un entier puisse accepter une string ? J'ai regarde la doc, j'ai vu que la fonction faisait un cast d'un char en int mais ça ne m'avance pas plus. Que passe réellement la fonction getchar() ? Est ce un code ascii en binaire ? ( Genre z=7A=01111010 ).
J'aimerais comprendre cette magie.
Merci d'avance.
Hors ligne
#2 Le 05/02/2013, à 19:40
- Spitfire 95
Re : Question de débutant C
Le type de c devrait être char.
Mais un char c'est jamais qu'un entier encodé sur 8 bits. Un caractère étant représenté par son code ASCII, encodé sur 7 ou 8 bits selon la table, ça entre bien dans la taille d'un int.
String serait plutôt un char*, un pointeur vers une chaîne de caractères.
http://www.siteduzero.com/informatique/ … caracteres
Dernière modification par Spitfire 95 (Le 05/02/2013, à 20:35)
Trisquel GNU/Linux 6.0 / Fedora 19 & rawhide.
joueur ryzom et wesnoth
Développeur livewallpaper
Membre déserteur et traître de la brigade des S.
Hors ligne
#3 Le 05/02/2013, à 20:32
- Braun
Re : Question de débutant C
Bonsoir,
je comprend pas comment un entier puisse accepter une string ?
Il n'en est pas question, une chaîne de caractère (string) est un tableau caractérisé par son adresse de départ. Un caractère est un entier (très court) transmis par valeur, le cas est donc immédiat.
Hors ligne
#4 Le 06/02/2013, à 13:42
- compte supprimé
Re : Question de débutant C
En pratique, ton int contiendra donc le code ASCII du caractère en décimal. (z=122)
#5 Le 06/02/2013, à 15:20
- Epehj
Re : Question de débutant C
C'est pareil en Java :
public static void main(final String[] args) {
int a = 97;
System.out.println("Entier : " + a);
System.out.println("Char : " + (char) a);
a = 'b';
System.out.println("Ensuite : " + a);
}
Linux user #447629 - Ubuntu user # 21770
C'est en sciant que Léonard devint scie
Hors ligne
Pages : 1