playXP

서브 메뉴

Page. 1 / 12502 [내 메뉴에 추가]
글쓰기
작성자 아이콘 marine12
작성일 2018-10-09 18:59:40 KST 조회 345
제목
c++ 코드 제발 한 번만 봐주십쇼 (_ _)

#include <iostream>

#include <stdio.h>

#include <string.h>

 

int main()

{

    char text[1000];

char *word[1000] = { NULL, }; // 단어

    int count[1000] = { 0, }; // 출현 횟수

    int n = 0; // 단어 수

    char *w; // 읽은 단어

    int i;

 printf("당신이 원하는 문장을 쓰세요. " );

 scanf("%s",text,sizeof(text));

    w = strtok(text, " "); // 단어 읽기

    while (w) {

        // 등록 여부

        for (i = 0; i < n; i++) {

            if (strcmp(word, w) == 0) break; // 등록되어 있음.

        }

        if (i < n) { // 등록되어 있음.

            count++; // 카운트 증가

        } else { // 새로운 단어

            word[n] = w; // 등록

            count[n] = 1;

            n++;

        }

 

        w = strtok(NULL, " "); // 다음 단어

    }

 

    for (i = 0; i < n; i++) {

        printf("%s: %d ", word, count);

    }

return 0;

}

제 목표는 i am groot 쓰면

i:1

am:1

groot:1 

뜨게 만드는건디

i:1 만 뜨고 후속 단어는 카운팅이 안됩니다요 ㅜㅜ 에러도 하나 안 뜨는데 머가 문제일까유

 ​ 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

아이콘 GLaDOS (2018-10-09 19:18:42 KST)
0↑ ↓0
센스 이미지
뭔가 코드가 전체적으로 이상한데 컴파일은 돌려보셨는지?
중간에 count++ 이건 어디서 튀어나온거시여
아이콘 개념의극한 (2018-10-09 19:19:20 KST)
0↑ ↓0
센스 이미지
n 이 0에서 변경이 안되는데 그거 확인좀
아이콘 개념의극한 (2018-10-09 19:19:55 KST)
0↑ ↓0
센스 이미지
n++ 같은거 하나 빼먹으신거 아님?
아이콘 어그로중독자 (2018-10-09 19:24:02 KST)
0↑ ↓0
센스 이미지
strtok 함수 내부에서 찾은 토큰 뒤의 구분자를 널 문자로 변경하기 때문에 두번째 호출부터는 토큰을 못 찾는 문제. 따라서 두번째 호출부터 토큰 찾기 종료까지는 첫번째 인자를 NULL로 넣어줘야 함
아이콘 어그로중독자 (2018-10-09 19:26:58 KST)
0↑ ↓0
센스 이미지
사족) 이게 과제라면 할 말은 없는데 문자열 길이에 대한 정보를 인자로 넘기지 않는 비-보안 함수들의 사용은 지양해야 함. (보안 함수들은 함수 뒤에 _s 가 붙는다.) 게다가 이는 strtok는 함수 내부에서 정적 변수로 저장해놨던 문자열 주소를 다룬다는 뜻이기 때문에 데이터 플로우를 파악하는데도 좋지 않음.
아이콘 어그로중독자 (2018-10-09 19:28:56 KST)
0↑ ↓0
센스 이미지
팁 1. MSVC를 사용 중이라면 코드 한줄한줄 스텝바이스텝 실행하면서 변수 및 메모리 값 확인하자. 이것은 디버깅의 방법.
팁 2. msdn 사이트에서 함수가 어떻게 사용되었는지 예제를 확인하자. http://msdn.microsoft.com/en-us/library/2c8d19sb.aspx
아이콘 GLaDOS (2018-10-09 19:30:31 KST)
0↑ ↓0
센스 이미지
그으리고 C++ 알고리즘 공부라면 string과 cin cout을 애용합시다
아이콘 어그로중독자 (2018-10-09 19:34:39 KST)
0↑ ↓0
센스 이미지
[오피니언] 알고리즘과 데이터에 집중할 거라면 C++ 다 쳐내고 순수하게 C로 쓰는 게 낫다.
아이콘 어그로중독자 (2018-10-09 19:35:40 KST)
0↑ ↓0
센스 이미지
그리고 위에 말대로 배열로 선언되었던 count++는 컴파일 경고라도 떴어야 함
아이콘 marine12 (2018-10-09 20:02:31 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
쒸불 고쳤는데 생각해보니까 is_there_word 함수를 써먹으라고 나와 있음 ㅜㅜ 근데 이거 쓰려면 string 써야 하는데 그럼 stdio.h 형식 갈아엎어야 하는데 우짤까요 ㅜㅜ
아이콘 marine12 (2018-10-09 20:03:00 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
답변해주신분들 사랑해요 ㅜㅜ
아이콘 GLaDOS (2018-10-09 20:04:55 KST)
0↑ ↓0
센스 이미지
include<string> 쓰세요 사용법도 그리 어렵지 않습니다 배열처럼 접근도되고 간편함
아이콘 LingTone (2018-10-09 20:06:59 KST)
0↑ ↓0
센스 이미지
일단 C++ 코드에서는 stdio.h, string.h가 아니라 cstdio, cstring을 쓰세요
늑대빌런 (2018-10-09 21:53:24 KST)
0↑ ↓0
센스 이미지
제발 CString을 써라

그게 C++ 문자열 처리에서 최고다
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.