const char * pathArray[50];
char nextFile[35];
while(lastFile == 0) {
file_descriptor = open(nextFile, O_RDWR);
if (file_descriptor == -1){
printf("Sorry, but %s could not be opened", nextFile);
exit(1);
}
nread = read (file_descriptor, buffer, 512);
close(file_descriptor);
if(strstr(buffer, "LAST_FILE") != NULL){
lastFile++;
break;
}
printf("CURRENT FILE: %s\n", nextFile);
printf("\n NEXT FILE:");
scanf(" %[^\n]", nextFile);
pathIndex++;
pathArray[pathIndex] = nextFile;
for(i = 0; i < pathIndex; i++) {
printf("%d: %s\n", i, pathArray[i]);
}
} //end while
То, что я не ожидал, это pathArray [pathIndex] = nextFile; присваивает адрес nextFile этому индексу, поэтому весь массив изменяется, когда nextFile делает. Я очень новичок в C и много раз пробовал и обнаружил множество проблем с получением всего имени файла (у многих имен файлов есть пробелы в них, поэтому он должен быть прочитан до тех пор, пока пользователь не войдет в него, и выше был способ, которым я нашел, чтобы предотвратить отключение имени файла в первом пространстве).Как я могу назначить элементы массиву const char * из обычного массива char в цикле?
Я также попытался добавить символ * otherArray [50], так что я мог бы использовать STRCPY, но изменить свое задание:
strcpy(otherArray[pathIndex], nextFile);
pathArray[pathIndex] = otherArray[pathIndex];
вызывает ошибку сегментации. Может ли кто-нибудь помочь?
Трудно понять, чего вы действительно хотите достичь, но из того, что я действительно понимаю, вы в значительной степени ошибаетесь. Зачем вам нужна переменная 'const char *' вверху, почему бы вам не использовать 'char *' без 'const'? – GergelyPolonkai
Назначение одного массива другому - это не то, что вы намерены делать, я считаю. Попробуйте 'strcpy (pathArray [pathIndex], nextfile);' Вам также нужно выделить правильную память, необходимую в вашем 'pathArray [index];' Это, как говорится, есть много, что здесь не имеет особого смысла. – bentank
По какой-то причине он вызывает ошибки сегментации (когда я пытаюсь использовать strcpy), и когда я не использую strcpy, у него такая же проблема. EDIT: Извините, я опубликовал до того, как Бентанк прокомментировал. Как выделить правильный объем памяти для pathArray [pathIndex]? – Follow