Я пытаюсь в алфавитном порядке сортировать пользовательский ввод с максимальным количеством 10 000 слов и максимальной длиной в 25 слов. Я использую «stop», чтобы досрочно завершить работу пользователя, что приводит меня к некоторым проблемам. Текущие результаты программы в следующем виде вывода при попытке ввода привета остановитьСортировка пользовательского ввода в лексикографических символах возвращаемой памяти?
▒l▒
0▒l▒
A{▒
e▒
▒&
▒▒
▒▒
▒▒
▒▒
▒l▒
▒l▒
▒▒;
▒Se▒
▒
▒
▒
▒
▒!
Ќl▒
▒
▒
▒
▒.X
▒
Я предполагаю, что это связанно с моим выделением памяти, но я не слишком уверен, и не мог найти ответы на некоторые вопросы относительно этого. Любая помощь будет оценен, следующее мой код
#include<stdio.h>
#include <string.h>
//for using tolower
#include <ctype.h>
int main() {
int i, k, j;
char abc[25];
const char *stop = "stop";
char *p; //using for lowercase
//using 2d array for max of 10,000 words, max size of words 25
char str[10000][25], temp[25];
printf("Enter up to 10000 words, type stop to enter the current words:\n");
while (strncmp(abc, "stop", 5) != 0) {
scanf("%s", abc);
}
//for (i = 0; i < 10000; ++i)
//scanf("%s[^\n]", str[i]);
for (i = 0; i < 10000; ++i)
for (k = i + 1; k < 10000; ++k) {
//comparing two strings using strcmp() function is used
//using strcpy() to copy string to a temp
if (strcmp(str[i], str[k]) > 0) {
strcpy(temp, str[i]);
strcpy(str[i], str[k]);
strcpy(str[k], temp);
}
}
//using pointer to converting to lowercase
//src: https://www.daniweb.com/programming/software-development/threads/57296/how-does-one-tolower-an-entire-string
for (p = str; *p != '\0'; p++)
*p = (char) tolower(*p);
//printing words in lexi order
printf("\nWords in lexicographical order: \n");
for (i = 0; i < 10000; ++i) {
puts(str[i]);
}
printf("WARNING: Words longer than 25 in length were ignored. \n");
return 0;
}
Вы не сохраняете вход string в массив 'str'. – BLUEPIXY
Кроме того, 'abc' не инициализируется при первом запуске цикла while. Поднимите предупреждения компилятора и исправьте их все, прежде чем отправлять вопрос. И научитесь использовать отладчик. Проблемы должны быть понятны, если вы использовали отладчик. – kaylum
@WhozCraig Действительно ли этот сарказм необходим? Кроме того, «datum» неверно в вашем предложении. Это должны быть множественные «данные». – DIMMSum