요즘 숭실대에서 프로그래밍 수업을 수강하고 있는데 수업 진행방식이 꽤 스파르타이다ㅠㅠ
역시 한달만에 C언어를 돌파한다는건 쉬운일이 아닌가 보다..
지금까지 과제는 잘 수행했는데 이번 주말과제는 좀 막혔던것 같다.
특히 마지막 문제가 잘 안풀렸는데
Input() 함수를 이용해서 '문자열'을 입력한 다음 이 문자열을 output()로 이동시킨다음 출력하는 문제였다.
처음에 보고 "별거 아니네?" 라고 생각했는데 생각보다 잘 안된다;;
처음엔 이렇게 짜보았다.
------------------------------------
int main(){
char * namestr;
namestr = input_name();
printf("입력결과 : %s",&namestr);
}
char * input_name(){
char * name;
char name_input[100];
printf("입력 : ");
scanf("%s",name_input);
name = name_input;
return name;
}
------------------------------------
input 함수에서 문자열을 입력받고 그 문자열의 주소를 반환했는데.
이게 될리가 없었지....; input_name()함수가 끝나면 name_input[100]과 name에 할당된 공간은 전부 삭제된다.
그래서 이렇게 다시 짜 보았다.
------------------------------------
int main(){
char name[100];
input_name(name);
output(name);
return 0;
}
void input_name(char *name){
printf("# 성명 입력 : ");
gets(name);
return;
}
void output(char *name){
printf("%s씨의 키는 ",name);
}
------------------------------------
main함수에 변수의 주소를 함수로 넘겨주고,
함수속에서는 단순히 할당받은 주소로 문자열을 전송해주거나
주소의 문자열을 출력해주는 역할 만 한다.
과제 끝!