Мне нужно выделить массив из 1000 указателей на символьные строки, прочитать в каждой строке символов из stdin и strdup каждую строку в массив. Я сделал следующее:Строка каждой строки в массив?
char *array[1000];
int index = 0;
for (int i = 0; i < 1000; i++) {
scanf("%s", &array[i]);
strdup(array[i]);
}
Я не уверен, что это правильный способ обойтись?
EDIT:
Итак, мне нужно подключить символ новой строки в конце каждой строки с нулевым символом, и мне нужно сделать это с помощью функции STRLEN. У меня есть следующее:
// Plug the newline where the end of
// a line is equal to '0/'
index = strlen(array) - 1; // line 30
if (array[index] = '\n') { // line 31
array[index] = '\0';
}
Но Im получаю следующее сообщение об ошибке:
linesort.c: In function ‘main’:
linesort.c:30: warning: passing argument 1 of ‘strlen’ from incompatible pointer type
/usr/include/string.h:399: note: expected ‘const char *’ but argument is of type ‘char **’
linesort.c:31: warning: assignment makes pointer from integer without a cast
linesort.c:31: warning: suggest parentheses around assignment used as truth value
Пожалуйста, посоветуйте!
Мне любопытно, если вы пробовали это? –
'scanf ("% s "...)' не является хорошим способом чтения в строках данных (если, возможно, если ваши строки никогда не имеют пробелов). 'fgets()' может быть лучшим выбором, или 'getline()', если эта нестандартная (но общая) функция библиотеки доступна вам. –
@MichaelBurr Как бы я вставлял новую строку в конце каждой строки с «\ 0», а не с ошибкой, если нет новой строки? Я не уверен, как это сделать. – YoshiK