수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

문자열 관련해서 질문 좀 올립니다.

슬기

2023.04.01

소스는 문장을 입력해서 단어가 몇개가 나왔는지 출력하는 소스코드인데 같은 단어가 중복해서 나온다면
중복되어 나오는게 아닌 그 단어 하나만 나오게 되는 코드인데요.#include stdio.h
#include ctype.h
#include string.h#define LINENUM 81int main()
{
char line[10][LINENUM];
int i = 0, j = 0, maxline = 0; int count = 0;
char *delimiter = ,.!?;
char *pword;
char *word[100];
int wordcnt[100] = {0}; printf(여러 줄에 원하는 문장을 입력하세요. );
printf(입력이 다 되었으면 \n);
printf(새로운 줄 처음에 ctrl+Z, 그리고 Enter를 입력 하세요. \n\n); while(gets(line[i])) //문장을 입력받음
{
line[i++]; //입력받은 문장을 배열에 저장
maxline++; //최대 문장 수 표시를 위한 변수
}
printf(\n); for(i=0; i maxline; i++) //문장 끝까지 다 읽음.
{
printf( %d줄에 입력한 문자열에서 토큰(단어) 출력 \n, i+1);
pword = strtok(line[i], delimiter); //NULL, ,, !, . 을 제외한 단어 출력

while(pword != NULL) //pword가 NULL이 아닐때(문장이 끊기지 않았을때)
{
if(count == 0)
{
printf(%s\n, pword);
word[count] = pword;
wordcnt[count++]++;
}
else
{
for(j=0; j count; j++)
if(strcmp(pword, word[j]) == 0)
{
wordcnt[j]++;
break;
}
if(j==count)
{
word[count] = pword;
wordcnt[count++]++;
}
}
pword = strtok(NULL, delimiter);
printf(%s\n, pword);
}
} printf(\n 새로운 단어와 수는 모두 %d개 입니다.\n\n, count);
for(i = 0; i count; i++)
printf(단어 %10s : %d회 출현 \n, word[i], wordcnt[i]); return 0;

}이 코드 부분에서 while(pword != NULL) //pword가 NULL이 아닐때(문장이 끊기지 않았을때)
{
if(count == 0)
{
printf(%s\n, pword);
word[count] = pword;
wordcnt[count++]++;
}
else
{
for(j=0; j count; j++)
if(strcmp(pword, word[j]) == 0)
{
wordcnt[j]++;
break;
}
if(j==count)
{
word[count] = pword;
wordcnt[count++]++;
}
}
pword = strtok(NULL, delimiter);
printf(%s\n, pword);
}
}이 부분이 count 변수로 문장을 출력해서 줄 수 별로 단어가 몇개가 나왔는지 세는 코드인데여기서 count가 어떻게 세어지는지에 대해 잘 이해를 못해서 이렇게 질문을 올려 봅니다.

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 가론

    만약 abc, abc, bcd, abc라고 친다면

    첫 번째 abc
    word[0] == abc
    wordcnt[0] == 1

    두 번째 abc
    j==0
    word[j] == abc
    wordcnt[j] == 2

    세 번째 bcd
    j == 1
    count == 1
    if 조건 참
    word[count] == bcd
    wordcnt[count++] == 1

    참고. count++는 현재카운트 값(1)에 1을 증가시킨 후
    count를 1증가 시킵니다. 즉 count는 2

  • 텃골돌샘터

    일단 strtok함수를 이용하여 단어들을 분리하죠
    count=0이라는 소리는 처음 단어가 들어가기 때문에 중복이 될 경우가 없으므로
    word[0] 배열에 단어를 넣고, wordcnt[0]를 1 증가시킵니다.

    그 후 두번째 문자부터는 for문을 통해서 word배열안에 있는 단어와 pword단어를 비교합니다.
    같을 경우에는 j를 통해서 wordcnt[j]값만 증가를 시키죠

    즉, 첫번째, 두번째 단어가 같다면
    j=0일 때 pword의 단어와 word[j

번호 제 목 글쓴이 날짜
2700484 두 개가 차이가 뭔지 알려주세요...(소수 찾는 프로그램) (2) 날위해 2025-07-05
2700426 인터넷 창 띄우는 질문이요 (1) 정훈 2025-07-04
2700400 원넓이를 계산이요 ㅜㅜ 천칭자리 2025-07-04
2700368 if에 관해서 질문이요... Orange 2025-07-04
2700339 이거 결과값이 왜이런건지.. (4) 그댸와나 2025-07-04
2700313 파일 읽어서 저장하는데 빈파일일 경우 문재가 발생하네요.. (2) 크나 2025-07-03
2700287 구조체 동적할당 연습을 하는데 오류가 뜹니다...(해결) (3) 아련나래 2025-07-03
2700264 문자와 숫자 동시에 입력??? 글고운 2025-07-03
2700236 txt파일로만 쓰고 읽게 하려면 어떻게 해야 하나요..?? (8) 미국녀 2025-07-03
2700211 전위 연산자 (2) 어른처럼 2025-07-02
2700183 C에서 파일이름을 받고, 그 파일의 사이즈를 출력해줘야하는데 내용이 출력이 안되네요 ;ㅅ; 피스케스 2025-07-02
2700150 꼭좀 도와주세요ㅠㅠㅠ 호습다 2025-07-02
2700095 연산문제...질문... 오빤테앵겨 2025-07-01
2700070 while문 , 3의배수 출력하는 프로그램좀 짜주세욤. 횃불 2025-07-01
2700041 초보인데요 ㅎ 배열안에 배열을 집어넣을수 있나요?? 헛장사 2025-07-01
2700012 배열// (1) 전갈자리 2025-07-01
2699895 무한루프에 빠집니다.!! 해결좀부탁드려요 (10) 선아 2025-06-30
2699842 질문을 너무 많이 하네여.....죄송.... (2) 해님꽃 2025-06-29
2699816 오류 질문입니다.. (1) 해비치 2025-06-29
2699763 질문입니다 ! 꼭 좀 도와주세요ㅠㅠ (2) 미라 2025-06-28
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com