Password Validator 코드입니다만, segmentation error가 발생합니다.

조회수 469회

사용하는_프로그래밍언어 : c

코드:



#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int valid_char(char* a, int b);
int valid_num(char* a, int b);
int valid_space(char* a, int b);
int validoption(char* a);

int main() {
char* pw;
    printf("Input password :");
    scanf("%[^\n]s",pw);


    if (strlen(pw) < 5 || strlen(pw) > 10){
        printf("Invalid password");
        return 0;
    }
    if (validoption(pw) == 0)
        printf("Valid password");
    else printf("Invalid password");
    return 0;
}

int valid_char(char* a, int b) {
    char aa[10];
    sprintf(aa, "%s", a);
    int i;
    for (i = 0; i < b; i++) {
        if (aa[i] >= 33 && aa[i] <= 47)
            return 1;
        else if (aa[i] >= 58 && aa[i] <= 64)
            return 1;
        else if (aa[i] >= 123 && aa[i] < 126)
            return 1;
    }
    return -1;
}


int valid_num(char* a, int b) {
    char aa[10];
    sprintf(aa, "%s", a);
    int i;
    for (i = 0; i < b; i++) {
        if (aa[i] >= 48 && aa[i] <= 57)
            return 1;
        else return 0;
    }
    return -1;
}
int valid_space(char* a, int b) {
    char aa[10];
    sprintf(aa, "%s", a);
    int i;
    for (i = 0; i < b; i++) {
        if (aa[i] == 32)
            return 0;
    }
    return 1;

}
int validoption(char* a) {
    int sum = valid_char(a, strlen(a)) + valid_num(a, strlen(a)) + valid_space(a, strlen(a));
    if (sum == 3)
        return 0;
    else return -1;
}

더 정확히는 다음의 문제들이 발생했습니다.

1) Dev C/C++에서 실행시켰을 때, 문자열을 입력시킬 수는 있었지만, 판단문으로 넘어가지 않았습니다.

2)TCP-tryC에서 컴파일했을 때, 제목에서 언급했던 segmentation error가 발생했습니다.

3) glot.io 라는 컴파일러에서는 입력을 넣을 수는 있으나, 결과는 항상 "Invalid password"가 나왔습니다.

어디에서 문제가 발생했는지 몰라서 assert문으로 어디의 오류를 확인해야 하는지도 가늠이 안 되서 이 곳에 글을 올립니다.

부디 답변 부탁드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)