C에서 String 대신 char[]을 입출력 파라미터로 선언하는 방법
조회수 1047회
안녕하세요
제대하고 C, C++은 안써서 다까먹어버려서 고통받는 복학생입니다.
치환 암호 코드를 C로 짜오라는 과제를 받았는데요, Java면 그나마 알바하면서 좀 써봐서 괜찮았을텐데 교수님께서 C로 해오라고 하셔서 고통스럽네요.
C에서 클래스를 못쓰고 String도 못쓰니까 너무 힘든데, char[]를 Java의 String처럼 다루려니 문법 오류가 많더라구요. 혹시 함수의 입력/출력 파라미터값으로 char[]를 쓰거나 대체할 수 있는 방법이 있을까요?
아무것도 안되어 있는 상태지만 혹시나 해서 코드 올립니다.
#include <stdio.h>
char[] enterKeyValue(void){
char key[]; // 키테이블 선언
printf("Enter key values. Numbers, space, and special letters are not allowed.\n"); // 숫자나 공백, 특수문자가 들어오면 다시 입력하라고 만들고 싶은 의지
printf("ABCDEFGHIJKLMNOPQRSTUVWXYZ \n");
printf("|||||||||||||||||||||||||| \n");
printf("vvvvvvvvvvvvvvvvvvvvvvvvvv \n");
scanf_s("%s \n", &key, sizeof(key));
return key;
}
char[] enc(char[] 키테이블, char[] 암호화시킬문장){
// 암호화
return 암호화시킨문장;
}
char[] dec(char[] 키테이블, char[] 복호화시킬문장){
// 복호화
return 복호화시킨문장;
}
char[] keyCheck(char testValid[]){
// key값이 딱 26자리가 맞는지 확인
// key값에 숫자, 공백, 특수문자가 있는지 확인
// key값 중 중복된 값이 있는지 확인
// key값에 있는 알파벳 모두 일단 대문자로 바꿈
return 올바른키;
}
int main(){
char key[]; // 키테이블 선언
int doFunction = 1; // C는 왜 불리안이 없는지 불만이지만 일단 임시로 만든 임시불리안 변수
while(doFunction == 1){
key = enterKeyValue();
key = keyCheck(key);
// 암호화 할지 복호화 할지
enc(); // 암호화
dec(); // 복호화
// 또 할지
if (다시 하면) continue;
else doFunction = 0;
}
return 0;
}
1 답변
-
int enc(char[] 키테이블, char[] 암호화시킬문장, char[] 복호화시킨문장)
와 같이 선언해야 합니다.
heap에 메모리 할당을 함수내에서 하지 말고 외부에서 하고 그의 포인터를 넘겨서 처리해야 합니다.
키테이블이 상수등 변경되지 않는 값이라면 전역변수/상수로 두는 방법도 있습니다.
그리고 c99에 bool 이 제공됩니다.
댓글 입력