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 21/02/2016, à 14:27

Adame Niang

Pointeur en langage C

Bonjour la communauté!!!!
j'ai un problème avec les pointeurs en langage C; à chaque fois que je déclare un pointeur pour l'exécuter, on me dit : "permission non accordée"
voila le code:

#include<stdio.h>
#include<stdlib.h>
main()
{
    long tab[50];
    int j,n;
    printf("Entrer le nombre de combinaisons:");
    scanf("%d",&n);
    //tab=calloc(n,sizeof(tab));
    for(j=0;j<n;j++)
    tab[j]=0;
    for(j=0;j<n;j++)
    {
        printf("%ld",tab[j]);
    }
}

[doc]pointeur en Langage C[/doc]


Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par cqfd93 (Le 21/02/2016, à 17:51)

Hors ligne

#2 Le 21/02/2016, à 16:46

pingouinux

Re : Pointeur en langage C

Bonjour,
Quel est le problème ? Ton programme compile et s'exécute normalement :il imprime une rangée de n zéros.

Hors ligne

#3 Le 21/02/2016, à 17:35

Compte anonymisé

Re : Pointeur en langage C

Conseil avisé : évite les pointeurs !!
C'est de la prog bas-niveau .
A la place utilise des cases sur tableau , ne t'occupe pas des adresses memoire pour tes valeurs ( pointers ).

Mais sinon , que veux-tu faire exactement ?

Dernière modification par Compte anonymisé (Le 21/02/2016, à 17:42)

#4 Le 21/02/2016, à 18:37

alius

Re : Pointeur en langage C

permission non accordé, c'est généralement le message que l'on te donne quand tu tente d'exécuter un fichier qui n'en a pas les droits. Pour résoudre ce problème :

chmod +x <your_file_herre>

Alius

Hors ligne

#5 Le 21/02/2016, à 20:01

claudius01

Re : Pointeur en langage C

Bonsoir,

infinite a écrit :

Conseil avisé : évite les pointeurs !!
C'est de la prog bas-niveau .
A la place utilise des cases sur tableau, ne t'occupe pas des adresses mémoire pour tes valeurs (pointeurs).

Je ne suis pas sûr que cela soit un bon conseil car Le Langage C est indissociable de la notion de pointeur qu'il faut maîtriser, sinon choisir un autre langage comme ... Java ou autre qui propose en contrepartie le concept de référence ;-)

De plus, ne pas utiliser les pointeurs conduit:
- A se passer de toute une partie de la libc avant en autre les méthodes strxxx pour manipuler les chaines de caractères passées par ... pointeurs
- A se passer de tout le mécanisme d'allocation dynamique de mémoire
- A se passer des passages d'objets (structures, tableaux, etc.) en argument des fonctions
- A se passer des objets retournés par les fonctions
- A se passer des pointeurs de fonctions
- etc.

En fait, c'est tout un pan non négligeable du Langage qui passera à la trappe ;-(

Un conseil Adame Niang: Apprend à maitriser les pointeurs qui ne sont que des variables qui doivent être initialisées comme toutes variables, mais je te le concède, cela ne se fera pas en jour et pour cela lire et relire et faire les exemples de: Le Langage C ANSI - Brian W.Kernighan & Dennis M. Ritchie avec un téléchargement possible: La Bible - 2ème édition (296 pages en Français).

Edit: Je rejoins les autres contributeurs pour savoir ce que tu veux faire exactement ?

Dernière modification par claudius01 (Le 21/02/2016, à 20:21)

Hors ligne

#6 Le 22/02/2016, à 10:57

pires57

Re : Pointeur en langage C

Conseil avisé : évite les pointeurs !!
C'est de la prog bas-niveau .
A la place utilise des cases sur tableau , ne t'occupe pas des adresses memoire pour tes valeurs ( pointers ).

Mais sinon , que veux-tu faire exactement ?

Je rejoints totalement claudius, déconseiller l'utilisation des pointeurs c'est probablement l'une des plus grosses conneries que tu pouvais sortir.
Travailler en C sans les pointeurs c'est comme demander à un menuisier de boucher une conduite de gaz avec son ciseau à bois : inconcevable.
En C les pointeurs sont omniprésent, sans les pointeurs adieux la flexibilité (tableau), les structures chainées, les manipulations de gros volume de donnée de manière simplifié, les trois quart des fonctions de la libc ....
Après si tu souhaites rester sur des programmes type :"Hello word! " toutes ta vie alors effectivement tu peut les oublier ...


Utilisateur d'Archlinux, Ubuntu et Kali Linux
Administrateur système et réseau spécialisé Linux.
LinkedIn

Hors ligne

#7 Le 22/02/2016, à 12:20

Adame Niang

Re : Pointeur en langage C

Au fait, le problème se trouve dans ma machine
c'est à dire quand j'utilise un pointeur clean mais au delà c'est le message qui revient
Merci

Hors ligne

#8 Le 22/02/2016, à 12:43

claudius01

Re : Pointeur en langage C

Bonjour,

Adame Niang a écrit :

Au fait, le problème se trouve dans ma machine
c'est à dire quand j'utilise un pointeur clean mais au delà c'est le message qui revient
Merci

Et dans la machine, il y a un programme qui s'exécute...
Pour ma culture, c'est quoi un pointeur clean ?
Désolé, je ne comprends vraiment pas ton problème...
@Merci: De rien et A suivre...

Hors ligne

#9 Le 22/02/2016, à 14:35

claudius01

Re : Pointeur en langage C

infinite a écrit :

... A la place utilise des cases sur tableau, ne t'occupe pas des adresses mémoire pour tes valeurs (pointeurs).

A cela je me permettre de répondre avec un exemple instructif et pédagogique qui montre qu'un tableau et un pointeur sur celui-ci n'est pas plus compliqué à utiliser dès lors que l'on a assimilé la syntaxe et la règle que le compilateur C adopte pour transcrire cela ;-)

#include <stdio.h>

int main(void)
{
   char tc[4] = { 'A', 'B', 'C', 'D' };
   char *pc = tc;
   int n;
   printf("Liste des 'tc'\n");
   for (n = 0; n < sizeof(tc); n++) {
      printf("\ttc[%d]\t[%c]\t[%c]\n", n, tc[n], *(pc + n));
   }
   printf("\nLa même liste des 'tc' sans erreur ni warning ;-)\n");
   printf("\t0[tc]\t[%c]\n", 0[tc]);
   printf("\t1[tc]\t[%c]\n", 1[tc]);
   printf("\t2[tc]\t[%c]\n", 2[tc]);
   printf("\t3[tc]\t[%c]\n", 3[tc]);

   return 0;
}
$ gcc -Wall -o pointeur pointeur.c && ./pointeur

Liste des 'tc':
        tc[0]   [A]     [A]
        tc[1]   [B]     [B]
        tc[2]   [C]     [C]
        tc[3]   [D]     [D]

La même liste des 'tc' sans erreur ni warning ;-)
        0[tc]   [A]
        1[tc]   [B]
        2[tc]   [C]
        3[tc]   [D]

J'avoue que la syntaxe 'N[tc]' pour accéder au Nème élément de 'tc' est peu courante mais est très évocatrice des mécanismes qui sont derrière
(exemple qui fonctionne depuis l'aube du Langage C ;-).

Edit:
Et c'est là que l'on commence à s'amuser avec les syntaxes obscures qui sont au demeurant très instructives pour la maîtrise du Langage
Cf. The International Obfuscated C Code Contest

Et donc pour le fun en complétant mon exemple ;-))

...
        printf("\nSyntaxes obscures mais entièrement valides...\n");
        printf("\t--(2[tc])+3\t[%c]\n", --(2[tc])+3);
        printf("\t++(2+1)[tc]\t[%c]\n", ++(2+1)[tc]);
        printf("\t++(7/2)[tc]-1\t[%c]\n", ++(7/2)[tc]-1);

qui donne à l'exécution

Syntaxes obscures mais entièrement valides...
        --(2[tc])+3     [E]
        ++(2+1)[tc]     [E]
        ++(7/2)[tc]-1   [E]

Tout cela pour montrer que même l'utilisation de tableaux et "de cases sur ceux-ci" peut être ardue à comprendre (d'accord, je pousse à l’extrême avec humour et sans animosité ;-)

Dernière modification par claudius01 (Le 22/02/2016, à 18:18)

Hors ligne

#10 Le 23/02/2016, à 00:14

Adame Niang

Re : Pointeur en langage C

Au fait quand je veux utiliser un pointeur ça peut marcher!!
Mais si j'utilise deux ou trois pointeurs, il y a probleme

Hors ligne

#11 Le 23/02/2016, à 07:08

pingouinux

Re : Pointeur en langage C

@claudius01 :
Merci pour ces exemples dont je ne soupçonnais même pas l'existence…

@Adame Niang :
Si tu veux de l'aide, il serait préférable de montrer ton programme, et les messages d'erreur.

Hors ligne