2022. 11. 18. 21:45ㆍC언어/기본 개념
배열
같은형태의 많은 데이터를 반복문으로 처리하기 위해서 메모리에 연속적으로 저장해놓고 쪼개서 사용하는 방법
int ary[5];
자료형 int
배열명 ary
요소개수 [5]
정수 배열 초기화
- int ary[5] = {1, 2, 3, 4, 5};
- int ary2[1000] = {0};
- int ary3[] = {1, 2, 3};
1번처럼 하나씩 지정할 수도 있고
2번처럼 0으로 초기화 할 수도 있다.
3번처럼 요소 개수를 생략도 가능하다.
반복문을 활용한 배열
#include <stdio.h>
int main(void)
{
int score[5];
int i;
int total = 0;
double avg;
for (i = 0; i < 5; i++) //score 배열의 각 값을 저장한다.
{
scanf("%d", &score[i]);
}
for (i = 0; i < 5; i++) // 배열의 합을 구한다.
{
total += score[i];
}
avg = total / 5.0;
for (i = 0; i < 5; i++) // 내가 입력한 수가 어떤 수인지 출력한다.
{
printf("%5d", score[i]);
}
printf("\n");
printf("평균 : %.1lf\n", avg);
return 0;
}
문자를 저장하는 배열
char형 배열을 선언 할 때는 저장할 문자열의 길이보다 하나 이상 크게 선언해야한다.(최대한 넉넉하게 선언 해야 좋다)
(ex. 'phone'을 저장하고 싶을 때는 배열을 최소 6개 이상 선언해야한다. // char str[80] = "phone";)
★ 만약 초기화 되지 않은 상태에서 배열 요소를 직접 대입한다면 마지막 문자 다음에는 널 문자('\0')를 대입해줘야한다!
char str[80]; str[0] = 'a'; str[1] = 'b'; str[2] = '\0'; //널 문자 |
strcpy
strcpy는 char형 배열에 새로운 문자열을 저장(대입)하는 함수다.
이때 #include <string.h> 헤더 파일을 작성해야한다(문자열 관련 함수 원형을 모아놓은 헤더 파일이다.)
strcpy(저장될 변수명, 저장할 변수명); |
#include <stdio.h>
#include <string.h>
int main(void)
{
char str1[80] = "cat";
char str2[80];
strcpy(str1, "tiger");
strcpy(str2, str1);
printf("%s, %s \n", str1, str2);
return 0;
}
결과값 >>> tiger, tiger |
gets, puts
gets(char형 배열명); : scanf와 달리 빈칸과 탭 문자를 사용 할 수 있다. enter를 누르기 전까지를 하나의 문자열로 저장.
puts(char형 배열명) : puts는 printf함수의 문자열 출력 기능과 비슷하다.
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
printf("문자열 입력 : ");
gets(str);
puts("입력된 문자열 : ");
puts(str);
return 0;
}
문자열 입력 : good morning (enter) 입력된 문자열 : good morning |
gets의 단점
배열의 크기를 인지하지 못하기 때문에 배열의 크기보다 더 큰 값을 넣게 됐을 때 나머지는 버퍼에 남아 있으므로 위험하다.
fgets
char str[20] fgets(str, sizeof(str), stdin); |
위에 gets 함수의 단점을 보완한 함수이다.
만약 선언 된 배열(20)보다 더 길게 작성한 경우에는 19바이트만 입력하고 '\n'개행문자를 넣고 끝낸다.
단 fgets함수는 기본적으로 '\n'넣고 마지막에 널 문자('\0')를 집어 넣는다. 그렇기 때문에 출력했을 때 자동으로 줄 바꿈이 된다.
이걸 방지 하기 위해서
fgets(str, sizeof(str), stdin);
str[strlen(str) - 1] = '\0'; //마지막 문자를 개행문자로 바꿔준다.
printf("%s", str);
'C언어 > 기본 개념' 카테고리의 다른 글
[C] 배열과 포인터 (0) | 2022.11.24 |
---|---|
[C] 포인터 (0) | 2022.11.21 |
[C] 함수-Kyeom (0) | 2022.11.17 |
[C] 반복문(break, continue) - Kyeom (0) | 2022.11.17 |
[C] if문 / switch ~ case문 (0) | 2022.11.16 |