728x90

학교과제중에 진짜 미쳐버릴거같았던 에러.... 오만곳을 다뒤졌는데 시원한해결책을 못찾고 3시간 허비...

애먼 컴파일러가 잘못된줄알구....버전 바꿧다가막...난리침

 

결론부터 말하자면 컴파일러가 아니라 함수 파라미터가 잘못된것이었음!!!

 

나는 아래 함수에서  strtok 함수를 쓰며 에러가 났는데, strcpy 도 파라미터를 잘못넣으면 비슷한 에러메시지가 난다...

캐릭터배열 너무 다루기 힘들다 흑흑흑

좀 투박하고..더좋은 방법이있을거같지만 일단 돌아가니 제출하고 자야지 ㅠ

 

아래 코드는 실제 과제내용은 당연아니고 오류나는 부분만 실험해보려고 이래저래 돌려본 코드...

 

오류나는 코드

#include <unistd.h>
#include <stdio.h>
#include <string.h>

//오류나는경우

int splitstr(char* cmd) {
    char *ptr =strtok(cmd, " ");
    while (ptr != '\0')
    {
        printf("%s\n", ptr);
        ptr = strcpy('\0', " ");
    }
    
}

int main(int argc, char const *argv[])
{
    splitstr("hello hi hi");
    return 0;
}

 

고친 코드(2줄 추가됨)

#include <unistd.h>
#include <stdio.h>
#include <string.h>


int splitstr(char* cmd) {
    char str1[100];					//char 배열 선언하고
    strcpy(str1, cmd);					//복사..
    char *ptr =strtok(str1, " ");
    while (ptr != '\0')
    {
        printf("%s\n", ptr);
        ptr = strtok(NULL, " ");
    }
    
}

int main(int argc, char const *argv[])
{
    splitstr("hello hi hi");
    return 0;
}

   

 

728x90

+ Recent posts