1. vi editor 실습 : 다음 프로그램을 편집하여 컴파일한 후 실행시킵니다. 프로그램 파일 이름은 test1.c 로 실행 파일 이름은 test1으로 합니다. vi editor의 다양한 명령을 사용하는 연습을 해 보세요.
해당 코드는 5개의 id와 이름을 입력받으면 data 파일에 id +5 한 값과 이름을 저장하는 코드이다.
< 입력 >
1 John
2 Jane
3 Mike
4 Sarah
5 David
< 출력 >
ls를 통해 생성된 data 파일을 확인할 수 있다. vi data를 통해 출력 값을 확인하면
data 파일에 값이 잘 저장된 것을 확인할 수 있다.
2. 함수 사용 실습 : 위 프로그램에 함수 add_five()를 추가합니다. add_five() 함수는 data[i].id의 값을 받아, 5를 더한 정수값을 return 합니다. 새 프로그램 파일은 test2.c로 이름을 붙이고, test1.c 파일을 복사한 후 편집 하세요.
> cp test1.c test2.c
를 통해 파일을 복사한다.
#include <stdio.h>
struct st{
int id;
char name[30];
};
int add_five(data){
return data+5;
}
int main(void){
FILE *fp;
int i;
struct st data[5];
fp=fopen("data", "w");
for(i=0;i<5;i++){
scanf("%d", &data[i].id);
scanf("%s", &data[i].name);
}
for(i=0;i<5;i++){
data[i].id = add_five(data[i].id);
}
for(i=0;i<5;i++){
fprintf(fp, "%-5d", data[i].id);
fprintf(fp, "%-5s\n", data[i].name);
}
return 0;
}
3. 포인터 사용 연습 : test2.c 파일을 복사하여 test3.c 프로그램 파일을 만듭니다. main() 함수에서 add_five() 함수로 데이터의 값이 아니라 포인터를 넘겨주는 연습을 합니다. 단, 배열 전체가 아니라 배 열의 원소 하나씩 포인터로 전달합니다. 이 경우, return 값은 없습니다.
>cp test2.c test3.c
#include <stdio.h>
struct st{
int id;
char name[30];
};
int add_five(int * data){
*data = *data + 5;
}
int main(void){
FILE *fp;
int i;
struct st data[5];
fp=fopen("data", "w");
for(i=0;i<5;i++){
scanf("%d", &data[i].id);
scanf("%s", &data[i].name);
}
for(i=0;i<5;i++){
add_five(&data[i].id);
}
for(i=0;i<5;i++){
fprintf(fp, "%-5d", data[i].id);
fprintf(fp, "%-5s\n", data[i].name);
}
return 0;
}
4. 배열 포인터 사용 연습 : test3.c 파일을 복사하여 test4.c 프로그램 파일을 만듭니다. main() 함수에 서 add_five() 함수로 배열 포인터를 넘겨주는 연습을 합니다. 배열 전체의 포인터가 전달되었으므로 반 복문은 main() 함수가 아니라 add_five() 함수에서 필요하며, 이 경우에도 return 값은 없습니다.
#include <stdio.h>
struct st{
int id;
char name[30];
};
int add_five(struct st * data){
int i;
for(i=0; i<5; i++){
(data+i)->id +=5;
}
}
int main(void){
FILE *fp;
int i;
struct st data[5];
fp=fopen("data", "w");
for(i=0;i<5;i++){
scanf("%d", &data[i].id);
scanf("%s", &data[i].name);
}
add_five(data);
for(i=0;i<5;i++){
fprintf(fp, "%-5d", data[i].id);
fprintf(fp, "%-5s\n", data[i].name);
}
return 0;
}
5. home directory에 “LAB09-05“ directory를 만든 후, 1번, 2번, 3번, 4번에서 만든 파일들을 ”LAB09-05“ directory로 옮깁니다.
> mkdir LAB09-05
> mv test1.c ./LAB09-05
> mv test2.c ./LAB09-05
> mv test3.c ./LAB09-05
....
6. ”LAB09-05“ directory의 파일 중 프로그램 파일에는 0644, 실행파일에는 0755의 access permission을 부여합니다.
> chmod 0644 test1.c
> chmod 0755 test1
....
7. ”LAB09-05“ 내의 test4.c 파일의 이름을 학번.c로 변경한 후, 지정된 directory로 복사한 후, ls와 cat 명령을 사용해 복사가 정상적으로 실행되었는지 확인합니다
> cd LAB09-05
> cp test4.c 학번.c
> cp ./../../unix/UNIX23/LAB09-05
'UNIX 프로그래밍' 카테고리의 다른 글
[3주차 실습] UNIX 실습 문제 (0) | 2023.10.22 |
---|---|
[2주차 실습] UNIX 실습 문제 (1) | 2023.10.22 |
[6주차 개념] UNIX 프로세스 생성과 실행 (1) | 2023.10.13 |
[4주차, 5주차 개념] UNIX 시스템 정보/ 프로세스 정보 (0) | 2023.10.13 |
[3주차 개념] UNIX 파일과 디렉토리 (0) | 2023.09.27 |
댓글