특정 단어가 입력 된 횟수를 계산할 때 하위 문자열을 사용하고 싶습니다. 코드를 약간만 사용하여 작동하게 만들었습니까? 그러나 나는 그것을 얻지 않는다!하위 문자열을 사용하여 단어가 나타나는 횟수를 계산하십시오.
내 코드는 다음
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i=0;
char buf[1026]={'\0'};
char *p="#EOF\n";
char *t;
while (strcmp(buf, p) != 0)
{
fgets(buf, 1025, stdin);
t=strtok(buf," , - \n");
while(t != NULL)
{
if(strncmp(t, argv[1], strlen(argv[1])) == 0)
{
i++;
}
}
}
printf("%d\n", i);
return 0;
}
이 오류가 없지만, i
의 값이 나는 그것이 한 번 말씀을 발견 한 후 카운트를 계속 확인하는 방법을 모른다 항상 0입니다. 나는 sizeof(t) < j
을 시도했지만 작동하지 않습니다. 귀하의 경우, 그것은 당신의 플랫폼의 포인터의 단지 크기 인 sizeof(char*)
을 그래서
아마도 'sizeof' 대신에'strlen'을 원할 것입니다. – cnicutar
@cnicutar 고쳤습니다. 고마워요! –
이것은 나에게 매우 비효율적 인 것처럼 보입니다. 문자열을 부분 문자열로 파싱하는 이유는 무엇입니까? 구분 기호를 찾아 결과를 계산하면됩니다. 문자열을 수정하는 데 낭비 할 이유가 없습니다. 'strpbrk()'과 같은 것을 사용하여 여러 문자 중 하나의 다음 항목을 찾거나 자신의 도움말 기능을 작성하십시오. –