Привет, я пытаюсь использовать fgets, чтобы взять строку из стандартного ввода и сохранить ее на входе, затем ее следует сравнить с массивом слов (более 50000 слов, взятых из текстового файла), используя метод strcmp, но я никогда не мог получить их сравнивать по какой-то причине, пока я не узнал, почему вот мой код.
char[] text;// <----------array is already full and working at this point I just
char input[24];// thought I'd include this for the memcpy
char check[24]="happ";
fgets(input,24, stdin);
for(int i=0; i < 50000; i++){
memcpy(check, text[i], strlen(input));// this is supposed to get a substring
if(strcmp(check, input) == 0){// this is supposed to auto complete
printf("%s",text[i]);}// say for example 4 letters are inputted the entire
//array will be checked if they have the same letters then that word will be printed
printf("\n %lu %s\n",strlen(check),check);
printf("\n %lu %s\n",strlen(input),input);
если «happ» вставлен, он должен распечатать последнюю букву в массиве и его размер, который должен быть 4, но stdin «5 happ». Я думал, что в конце ввода может быть \n, поэтому я использовал temp и получил подстрока ввода длиной strlen(input)-1, но все, что я получил, это "6 happ\377", пожалуйста, помогите, я пытался исследовать это, но я не понимал, что с ним не так, поэтому я не знал, что исследовать
char
без размера на самом деле не помогает. Насколько это велико? - person cadaniluk   schedule 29.11.2015char[] text;
Это скомпилировано? Это тоже без размера? - person ameyCU   schedule 29.11.2015fgets()
сохраняет любыеnewline
в конце строки? Во-вторых, сmemcpy(check, text[i], strlen(input));
вы не копируете терминатор строки, поэтому последующийstrcmp()
, вероятно, упадет. --›memcpy(check, text[i], strlen(input)+1);
- person Weather Vane   schedule 29.11.2015