Bonjour je souhaite séparer un string en plusieurs string retourner ce dernier voici le string dont il est question :
#shadervertex
#version 330 core
layout(location = 0) in vec 4 position;
void main()
{
gl_Position = position;
};
#shaderfragment
#version 330 core
layout(location = 0) out vec 4 color;
void main()
{
color = vec4 (1.0, 0, 0, 1.0);
};
Le but étant que a chaque fois que "#shader(nom du shader)" est rencontrer tout ce qui suit jusqu'a ce qu'on atteigne le suivant #shader soit copié dans un array de string et retourne par une fonction qui aurai pour paramètre le num du shader. Par exemple :
char** ParseShader(char* string(celui qui doit être séparé), char* type(par exemple "#shadervertex"))
J'ai déja essayé en utilisant sscanf, strtok, strcpy et strstr mais je ne parviens pas a écrire cette fonction.
De plus chaque string contenue dans le string est de taille différente de ce fait il m'est impossible de le convertir en 2D array comme ceci :
char** ParseShader(char* shader, unsigned int type)
{
unsigned int i = 0, space = 0;
for (i = 0; i < strlen(shader); i++)
{
if (shader[i] == ' ')
{
space++;
}
}
if (char** word = (char**)malloc(sizeof(char*) * (space + 1))) // alloue de la mémoire pour chaque string séparé par un espace dans le string en question
{
for (i = 0; i < ???? ; i++) // ici je devrais allouer de la mémoire pour chaque string mais ils ont tous une taille différente que faire ??
{
word[i] = (char*)malloc(sizeof(char)* i);
}
}
return NULL;
}
Quelqu'un pourrait-t-il me mettre sur la voie ?