我正在用 C 编写 minisql 代码,但在分配字符串数组时遇到了一些问题。我制作了一个名为“alocaString”的函数来执行此操作(bc 我经常使用它),但我认为它不起作用。 当代码到达“strncpy(lista[qtnPalavras],splitStr,100);”这一行时在函数“listaPalavras”(目的是将字符串拆分为不同类型的字符)中,创建了一个名为“strcpy-avx2.S”的文件,该函数(**lista)的参数之一被分配了“ alocaString”,所以我认为问题出在该函数中。
我已经尝试使用 valgrind 并向我尝试在该函数上使用的所有字符串数组显示“在此函数中未初始化使用 [-Werror=uninitialized]”,但我正在函数内部初始化它们
int alocaString (char **string,int tamanho,int posicoes){
string = malloc (posicoes * sizeof(char*));
for (int i = 0; i < posicoes; i++){
string [i] = malloc (tamanho * sizeof(char));
if (string[i] == NULL){return 0;}
}
return **string;
}
void desalocaString (char **string,int posicoes){
for (int i = 0; i < (posicoes); i++){
free (string[i]);
}
free (string);
}
int listaPalavras(char *entrada,char **lista,char *separador){ // lista as palavras
char *splitStr;
int qtnPalavras = 0;
splitStr = strtok(entrada,separador);
while (splitStr != NULL){
strncpy(lista[qtnPalavras],100);
qtnPalavras++;
splitStr = strtok(NULL,separador);
}
return qtnPalavras;
}