IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

c_types et les pointeurs de pointeurs


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut c_types et les pointeurs de pointeurs
    Bonjour à tous,

    Ayant été très bien informé la précédente fois que j'ai demandé de l'aide ici, je reviens à nouveau à la charge.

    On m'a donné la mission d'écrire un petit programme en python qui fait appel à des fonctions en C. Ne connaissant rien du tout au python je bute sur des bêtises et étant pressé par le temps, il me faut un coup de pouce

    Voici le code C:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    typedef struct
    {
        int cols;      
        int rows;      
        bool**dot;     
    } matrix;
     
    int show(const matrix* data)
    {
    	int i,j;
     
    	for( i = 0 ; i < data->rows ; i++ )
    	{
    		for ( j = 0 ; j < data->cols ; j++ )
    		{
    			if( data->dot[i][j] == true )
    				printf("true ");
    			else	
    				printf("false ");
    		}
    		printf("\n");
    	}
            return 1;
    }
    Et le code Python correspondant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    from c_types import *
     
    def myFunction(py_matrix):
     
    	class Matrix(Structure):
    		_fields_ = [("cols",c_int),
                                ("rows",c_int),
                                ("dot",POINTER(POINTER(c_bool)))]
     
    	c_matrix = Matrix()
    	c_matrix.cols = c_int(len(py_matrix))
    	c_matrix.rows = c_int(len(py_matrix[0]))
     
    	for i in range(c_matrix.rows):
        	        for j in range(c_matrix.cols):
           		        c_matrix.dot[i][j] = py_matrix[i][j]
     
    	return show(c_matrix)
    La ou ça pose soucis c'est à la ligne 17 dans le code python.

    L'idée serait de pouvoir écrire en python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mat = [[0,1,1] , [0,0,1] ]
    myFunction(mat)
    1 correspondant à vrai et 0 à faux (Non vous n'êtes pas idiot c'est le reglement qui dit d'être clair ^^).

    Comment je peux me débrouiller pour copier ma matrice en python vers ma structure qui sera adéquat pour ma fonction C ?

    Merci de vos réponses, et bon dev !

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    On est toujours un peu plus frai après une bonne nuit de sommeil, j'ai réussis à résoudre mon problème. Voici la solution pour les éventuels intéressés.

    En essayant de bricoler avec des trucs du genre c_matrix.dot[i][j], j'avais cette ligne d'erreur: ValueError: NULL pointer access

    Tout comme en C, il faut allouer la mémoire pour pouvoir y acceder avec des crochets.

    Et donc pour aller une matrice de booléen, cette écriture fonction bien chez moi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    c_matrix.dot = (POINTER(c_bool) * row)()
    for i in range(row):
    	c_matrix.dot[i] = (c_bool * col)()
    A bientôt pour de nouvelles questions !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pointeurs et pointeurs de pointeurs
    Par wallace27 dans le forum C
    Réponses: 10
    Dernier message: 09/04/2015, 22h07
  2. Réponses: 21
    Dernier message: 06/08/2009, 09h31
  3. Réponses: 6
    Dernier message: 26/05/2007, 00h33
  4. les pointeurs sur pointeurs ne m'aiment pas :/
    Par GhostNemo dans le forum C
    Réponses: 3
    Dernier message: 17/12/2006, 23h10
  5. Les caractères et pointeurs
    Par ajsd0208 dans le forum C
    Réponses: 5
    Dernier message: 07/08/2006, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo