으로 시작하는 문자열에서 정확한 단어를 찾습니다. C 프로그래밍 과정에서 C로 연습을하고 있습니다. 텍스트 파일의 데이터를 링크 된 목록으로 읽고 일치 항목을 찾아 결과를 출력해야합니다.c "
텍스트 파일의예 :
"Apple/Orange",1
"Banana/Watermelon/Lemon",2
"Watermelon/Strawberry",3
"Orange/Grape/Watermelon",4
"Blueberry", 5
는 fgets(), sscanf를() 및 무효 기능을 사용하여 내 연결리스트로를 저장, 그러므로 문자열은 따옴표로 시작됩니다
.문제는 strncmp()를 사용하여 문자열에서 단어를 찾으려고 할 때 발생하는 것이 었습니다. rk 따옴표로 인해.
말 그대로 인용 부호로 시작되는 문자열에서 정확한 단어를 찾기위한 단서가 어떤 도움이 인정되지 않을 것이라고했다void findFruits(List *list){
Node *position = list->first;
while(position != NULL){
if(strncmp(position->fruits, "Watermelon", 10)==0){
printf("%s, %d\n", position->fruits, position->number);
}
position = position->next;
}
, 감사 :
내가 좋아하는 일을했다.이제 Barmar의 아이디어 덕분에 해결되었습니다. strncmp() 대신 strstr()을 사용하려고했을 때 완벽하게 작동했습니다. 당신이 문자열 Banana/Watermelon/Lemon
에서 예를 Watermelon
를 들어, 하나의 과일 단어를 검색하려면
if(strstr(position->fruits, "Watermelon")){
printf("%s, %d\n", position->fruits, position->number);
}
'(strncmp (position-> fruits, "Watermelon \" ", 10)'. 즉 이스케이프는 문자열 리터럴에 특수 문자를 지정하는 표준 방법입니다. – kaylum
가능한 중복 of [큰 따옴표 (")를 C-string에 포함] (0120-385-301) – kaylum
또는 데이터에서 따옴표를 제거하십시오. 연결된 목록에 저장하십시오. 따옴표가 데이터의 필수 부분이 아닌 데이터 형식화의 일부로 가장 적절하게 고려되는 경우 좋은 생각입니다. –