0
/s 다음에 영화 제목 (예 :/s Green Mile)을 입력하면 프로그램이 영화 배열에서 해당 영화 제목을 검색하지만 strstr과 기능이 작동하지 않습니다. 또한가/영화/r은 데이터베이스에있는 모든 영화를 보여줍니다/q는 프로그램을 종료 추가합니다.프로그래밍에서 2d 배열의 단어 검색
#include <stdio.h>
#include <string.h>
main() {
char movies[1000][64];
int i;
int j = 1;
int k = 0;
int counter = 0;
char buffer[64];
char buffer2[64];
int len;
do {
printf("Enter command for movie database:\n");
fgets(buffer, 64, stdin);
if (buffer[1] == 'a') {
len = strlen(buffer);
if (buffer[len - 1] == '\n')
buffer[len - 1] = '\0';
for(i=3; i<sizeof(buffer); i++) {
movies[counter][k] = buffer[i];
k++;
}
printf("You have chosen to enter a movie in the database.\n");
printf("The movie added to the database is: %s\n", &movies[counter][0]);
counter++;
k = 0;
}
if (buffer[1] == 'q') {
printf("You have chosen to quit.\n");
printf("Goodbye.\n");
}
if (buffer[1] == 's') {
for(i=2; i<sizeof(buffer); i++) {
buffer2[k] = buffer[i];
k++;
}
for (i = 0; i < counter; i++) {
if (strstr(movies[i], buffer2) != NULL) {
printf("Found %s in position %d,%s\n", buffer2, i + 1, movies[i]);
printf("Index of Movie is %d.\n", i + 1);
}
}
k = 0;
}
if (buffer[1] == 'r') {
printf("You have choosen to report movies in database\n");
printf("These are the movies you have watched:\n");
for(i = 0; i < counter; i++) {
printf("%d: %s\n", j, &movies[i][0]);
j++;
}
printf("\n");
j = 1;
}
} while (buffer[1] != 'q');
}
귀하의 buffer2의 첫 번째 문자는 공간이 아니라이 제대로 NULL이 종료되었습니다. –
그래서 내 카운터 변수 (i) 3에서 시작하고 버퍼가 null로 생각해야 할 것입니다 '\ 0'으로 시작한 다음 buffer2로 복사했습니다. – user3633960
맞습니다. 전체 버퍼를 복사하는 것을 놓쳤습니다. strcpy (buffer2, & buffer [3])를 사용하는 것이 더 낫습니다. –