문자열 처리때..

geneven의 이미지

fgets으로 텍스트 파일에서 한줄을 읽으면 '\n'같은 문자까지도 읽어서 문자열 처리를 어렵게 하거든요? 문자열에서 저런거 없앨수 있는 함수같은거 있나요? 특정 문자를 제거하는 함수같은거요.. 또 예를들면 문자열
adfads dasfdas aaa같은 문자열 중에서 만약 맨뒤의 aaa뒤에 공백이 여러개 있으면 그 부분의 공백만 제거할수 있는 방법은 없을까요?

datamind의 이미지

아래 펑션들을 이용해서 구현하세요..

int strcasecmp(const char *s1, const char *s2);

int strncasecmp(const char *s1, const char *s2, int n);

char *strcat(char *dst, const char *src);

char *strncat(char *dst, const char *src, size_t n);

char *strchr(const char *s, int c);

char *strrchr(const char *s, int c);

int strcmp(const char *s1, const char *s2);

int strncmp(const char *s1, const char *s2, size_t n);

char *strcpy(char *dst, const char *src);

char *strncpy(char *dst, const char *src, size_t n);

size_t strcspn(const char *s1, const char *s2);

size_t strspn(const char *s1, const char *s2);

char *strdup(const char *s1);

size_t strlen(const char *s);

char *strpbrk(const char *s1, const char *s2);

char *strstr(const char *s1, const char *s2);

char *strtok(char *s1, const char *s2);

char *strtok_r(char *s1, const char *s2, char **lasts);

mtorange의 이미지


char *trim(char *s)
{   
    register char *p, *q, *r;
    for (p = s; *p && ' '==*p; p++) /*NULL*/;

   
    for (q = p, r = p; *q; q++)
    {
        if (' ' != *q) {
            r = q; 
        }
    }
    if ('\0' != *r) {
        if (' ' == *(r+1)) {
            *(r+1) = '\0';
        }
    }
    return p;
}