Итак, моя цель - создать массив конкретных слов. Вот текущий код, который я использую:Проблема с ошибками сегментации с использованием двух указателей в C
char **specificWords; //Global
specificWords = malloc(100 * sizeof(char *));
int addToArray(char * word, int i){
specificWords[i] = word;
printf("%s\n", specificWords[i]);
return 0;
}
Теперь просто делать вид, в основном функция повторяющегося вызова функции с приращением «I» ценности и новые «слова». Оператор печати внутри функции работает отлично, но если я попытаюсь использовать тот же оператор печати вне функции, программа закроется с ошибкой ошибки seg.
Я все еще новичок в программировании на языке C, но я пробовал много разных вещей, от выделения пространства для массива каждый раз, когда он вызывается. Для разных методов приращения, таких как «(** specificWords) ++», и просто используя цикл в основном, но я действительно не могу понять это.
Сообщите мне, если вам нужно что-нибудь разъясненное, спасибо.
EDIT: Вот Main ... Я пытался опубликовать программу, чтобы объяснить мою проблему, так вот реальный:
char **specificWords; //Global
char *globalString;
int main(int argc, char* argv[]) {
specificWords = malloc(100 * sizeof(char *));
int newLineCount = countLines(globalString);
addToArray(newLineCount);
printf("%s\n", specificWords[0]); //segFaults
return 0;
}
int addToArray(int newLineCount){
int ch;
int loc = 0;
char *tempKeyword;
char temp[5026];
int j = 0;
int k = 1;
j = 0;
for(int i = 0; i < newLineCount; i++){
while(1){
//I read in a file and made the whole thing one big string which is global string
ch = globalString[loc];
if(ch == '\n')
break;
temp[j] = ch;
loc++;
j++;
}
loc++;
temp[j] = '\0';
tempKeyword = temp;
specificWords[k] = tempKeyword;
printf("%s\n", specificWords[k]);
//k++; // if used seg faults...
}
}
shre ваш главный код. код печати в основном. или делить весь код – MOHAMED
@MOHAMED, ладно, дайте мне мгновение, чтобы опубликовать его. – JumpingRock
@MOHAMED Я обновил его – JumpingRock