strcmp, strtok의 결과를 먹이면 다음 코드에서 뻔뻔스럽게 거짓말하는 것 같습니다. parseList 파라미터의 파일이 입력에Help! strcmp가 strtok 결과를 먹일 때 거짓말입니다
int fSize;
char * buffer=NULL;
char * jobToken = "job";
char * nextToken=NULL;
job * curJob=NULL;
struct node * head=NULL;
struct node * parseList(FILE* file){
fseek(file,0,SEEK_END);
fSize=ftell(file);
buffer = (char*)malloc(fSize+1);
printf("%d chars: reading buffer now:\n",fSize);
fseek(file,0,SEEK_SET);
fread (buffer,1,fSize,file);
nextToken = strtok(buffer, " \n");
while (nextToken!=NULL){
printf("**Running Token: %s**\n",nextToken);
if (strcmp(nextToken,jobToken)){
printf("Accepted %s as %s\n",nextToken,jobToken);
}else{
printf("not %s, %s\n",jobToken,nextToken);
}
printf("End of state - %s\n",nextToken);
nextToken = strtok(NULL, " \n");
}
free (buffer);
return NULL;
}
:
14 chars: reading buffer now:
**Running Token: job**
not job, job
End of state - job
**Running Token: 23**
Accepted 23 as job
End of state - 23
**Running Token: job**
not job, job
End of state - job
**Running Token: 10**
Accepted 10 as job
End of state - 10
라이즈 ':
job 23
job 10
이 출력을 제공!
Raaaage! 고마워, 지금 명백하게 보인다. – mjames
명시 적으로 0과 비교하는 것을 선호합니다. 결과를 부울 값으로 해석 할 기회가 줄어 듭니다. 나는'액세스'와 똑같은 일을한다. –
나는 의미 론적 아이디어를 이름에 넣었으므로'#define streq (s1, s2) (strcmp ((s1), (s2)) == 0)'을 좋아한다. –