strtok ()를 사용하여 공백을 포함하는 주어진 문자열을 여러 문자열로 분할하는 방법은 무엇입니까?

Sanober

일부 텍스트가 포함 된 email.txt라는 파일이 있습니다. 공백이 포함 된 주어진 문자열을 여러 문자열로 분할하려고합니다. 내가 작성한 프로그램은 단어를 별도의 줄로 나누지 않습니다. 파일의 마지막 단어의 출력을 제공합니다. 내 코드는 다음과 같습니다.

#include <stdio.h>
#include <string.h>
#define MAXCHAR 1000
int main()
{
    FILE *fp2;    
    char str2[MAXCHAR];
    int line = 0;
    char delim[] = " ";
    int init_size = strlen(str2);
    fp2 = fopen("email.txt","r");
    while( fgets( str2, MAXCHAR, fp2 )) {
        line++;
        // printf(" %s",str2);  
    }
    char *ptr = strtok(str2, delim);
    
    while(ptr != NULL)
    {
        printf("%s\n", ptr);
        ptr = strtok(NULL, delim);
    }       
    
    return 0;
}
DevSolar

당신이하는 첫번째 파일의 모든 라인을 통해 반복하고 다음 을 통해 당신 루프 strtok()로 돌아갑니다. 즉, 마지막 으로 읽은 줄만 토큰 화합니다 .

이러한 루프를 중첩해야합니다. 한 줄을 읽고 토큰 화 한 다음 다음 줄을 읽어야합니다.

while( fgets( str2, MAXCHAR, fp2 )) {
    char * ptr;
    line++;
    //  printf(" %s",str2);
    ptr = strtok(str2, delim);

    while(ptr != NULL)
    {
        printf("%s\n", ptr);
        ptr = strtok(NULL, delim);
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관