--start of snip--
char name[15];
...
printf("Enter employee name \n");
scanf("%s",name);
printf("strlen %d \n", strlen(name));
--end of snip --
Output:
Enter employee name
Veronica
8
끝까지 null 문자를 추가하지 않는 이유는 무엇입니까? 나는 아무것도 없어?왜 scanf 할 때 Null 문자가 문자열 끝에 추가되지 않습니까?
누군가 설명해주십시오.
편집 :
이 fgets
을 사용하여 열 파일에서 읽기 라인이고 줄에서 토큰을 얻을 수 strtok(line,"\t ")
을 사용했다.
--snip--
char * chk;
char line[100];
char temp_name[15];
while(fgets(line, sizeof line, filep))
{
chk = strtok(line, " \t");
while(chk !-= NULL)
{
strcpy(temp_name, chk);
chk = strtok(NULL, " \t");
}
}
--snip --
문제 :
내가 추측하고 여분의 문자 인해 strtok를 delimitter 사용의 부적절한 취급에 temp_name (단지 이름)의 끝에 추가지고 있습니다.
솔루션 : NULL 또는 추가 문자가 strtok를 작업에 추가하기에 문제가 있는지 여부를
sscanf(line, "%s", temp_name); //easy fix
가 어쨌든 내가 혼란스러워했다
if(!strncmp(temp_name, name, strlen(name))) // this is one fix
다른 현명한 이용.
답변 해 주셔서 감사합니다.
또한, 하나는 공백, 탭을 피하기 위해 무엇을 구분 내가 strtok를에 사용해야 도움을 좋아하면 것인지 등
거기에 있습니다. 'strlen'은 그것을 세지 않습니다. –
check http://stackoverflow.com/questions/4132849/strlen-in-c-and-c-how-does-it-work –
거기에 없으면 strlen은 – Dave