이 내 코드입니다 : 비교했을 때을 strcmp 결과 문자열이 동일한 경우
if(strcmp(pch,map[i].name)==0){
printf("Equal\n");
return 0;
}
pch
파일에서 읽기, map[i].name
이것은 64보다 작은 문자열에 대한 큰 64 의 알려진 크기를 작동했다 이러한 두 가지 크기 (63)의 아래 문자열 :
file11111111111111111111111111111111111111111111111111111111111
및
file11111111111111111111111111111111111111111111111111111111111
모든 복숭아하고 결과 A를 예상 s는 동일하지만 (크기 64)이 두 가지를 비교했을 때
file111111111111111111111111111111111111111111111111111111111111
및
file111111111111111111111111111111111111111111111111111111111111
복귀가 거짓이다.
if(strncmp(pch,map[i].name,64)==0){
printf("Equal\n");
return 0;
}
을 그리고 그것은 64의 정확한 크기의 문자열 작업을 수행하지만, 은 작은 문자열 결과는 무작위 : 나는 일을 생각했다. 여기에 어떤 종류의 부끄러움이 있습니까?
편집 :
char * pch;
char tempFilesNeeded[100*64+100];
strcpy(tempFilesNeeded,map[i].filesNeeded);
pch = strtok(tempFilesNeeded,",");
while (pch != NULL)
{
if(strcmp(pch,map[i].name)==0){
printf("Equal\n");
return 0;
}
pch = strtok (NULL, ",");
}
char * pch입니다. 내 편집을 보시기 바랍니다 – Tom
@Tom "map [i] .name은 알려진 크기가 64입니다."그래서 그는 여전히 점수를 보유하고 있습니다. – xiaoyi
@Tom 64 문자 길이의 문자열에 64 문자 길이의 문자열을 넣을 수 없습니다. – xiaoyi