strings c include stdio h main charyHappy char
- Slides: 44
strings. c 문자배열과 문자열 포인터 #include <stdio. h> main(){ chary[]="Happy"; char *strptr="Good"; int i; printf("chary = %sn", chary); printf("strptr = %sn", strptr); chary = "Day"; //Compile error : left operand must be l-value strptr = "Luck"; *chary = 'h'; *strptr = 'g'; //Runtime error printf("chary = %sn", chary); printf("strptr = %sn", strptr); } 7 포인터와배열 C Programming
len. Str. c 문자열의 길이 구하기 #include <stdio. h> int main() { char str[255]; char *p; printf("input string : "); scanf("%s", str); p = str; while(*p++); //null 문자가 나올 때까지 반복 p--; //null문자 제외 printf("length 3 = %dn", p - str); //포인터의 차이 값으로 길이 계산 return 0; } 9 포인터와배열 C Programming
convert. Char. c 문자열을 대문자로 변환 #include <stdio. h> int main() { char str[] = "ab 45&*xyz"; char *p; printf("Before str = %sn", str); p = str; while(*p){ if (*p >= 'a' && *p <= 'z') *p = *p + ('A' - 'a' ); //소문자와 대문자의 코드차이 값을 더하여 변환 p++; } printf("After str = %sn", str); return 0; } 10 포인터와배열 C Programming
multipointer. c 이차원배열과 이중포인터 #include <stdio. h> void main() { int b[4][2]={{1, 10}, {2, 20}, {3, 30}, {4, 40}}; int i; 0012 FF 60 1 0012 FF 64 10 0012 FF 68 2 0012 FF 6 C 20 0012 FF 70 3 0012 FF 74 30 0012 FF 78 4 0012 FF 7 C 40 1 10 2 20 3 30 4 40 printf("%p %p %dn", b, **b); for (i=0; i<4; i++) printf("%p %p %dn", b+i, b[i], *b[i], b[i]+1, *(b[i]+1)); for (i=0; i<4; i++) printf("%d %d n", **(b+i), *(*(b+i)+1)); } 19 포인터와배열 C Programming
aryfunction. c 1차원 배열을 매개변수로 하는 다양한 함수처리 예 #include <stdio. h> int sumary(int ary[], int SIZE); int sumaryp(int *ary, int SIZE); int sump 2(int *ary, int SIZE); int main(void) { int i = 0, sum=0, ary. Length; int point[] = {95, 88, 76, 54, 85, 33, 65, 78, 99, 82}; ary. Length = sizeof (point) / sizeof (int); printf("배열 point[i]를 이용하여 원소 값을 출력 n"); for (i = 0; i < ary. Length; i++) { printf("%d%s", point[i], i == ary. Length - 1 ? "n" : ", "); sum += point[i]; } printf("메인에서 구한 합은 %dnn", sum); printf("함수 sumary()에서 구한 합은 %dn", sumary(point, ary. Length)); sumaryp()에서 구한 합은 %dn", sumaryp(point, ary. Length)); sump()에서 구한 합은 %dn", sump(point, ary. Length)); sump 2()에서 구한 합은 %dn", sump 2(point, ary. Length)); } 22 포인터와배열 C Programming
/* aryfunction. c 계속 */ int sumary(int ary[], int SIZE) { int sum = 0, i = 0; for (i = 0; i < SIZE; i++) { sum += ary[i]; } return sum; } int sumaryp(int *ary, int SIZE) { int sum = 0, i = 0; for (i = 0; i < SIZE; i++) { sum += ary[i]; } return sum; } 23 int sump(int *ary, int SIZE) { int sum = 0, i = 0; for (i = 0; i < SIZE; i++) { sum += *(ary + i); } return sum; } int sump 2(int *ary, int SIZE) { int sum = 0, i = 0; for (i = 0; i < SIZE; i++) { sum += *ary++; } return sum; } 포인터와배열 C Programming
pointer. Param 2. c 2차원 배열을 매개변수로 사용한 예 #include <stdio. h> #define Rows 2 12 FF 70 #define Cols 3 void power_array 2 (int *x); … main(){ int n[Rows][Cols]={{1, 2, 3}, {4, 5, 6}}; 12 FF 78 n int i, j; for (i=0; i<Rows; i++) 12 FF 7 C for (j=0; j<Cols; j++) printf("%d ", n[i][j]); power_array 2(n); //2차원 배열명을 매개변수로 사용 12 FF 80 printf("n"); for (i=0; i<Rows; i++) 12 FF 84 for (j=0; j<Cols; j++) printf("%d ", n[i][j]); 12 FF 88 } // 2차원 배열을 1차원적 접근을 위한 포인터로 받아서 처리 12 FF 8 C void power_array 2 (int *x) { int i, j; for (i=0; i< Rows*Cols; i++) for (i=0; i<Rows; i++) *(x+i) *= *(x+i); for (j=0; j<Cols; j++) *(x+i*Cols+j) *= *(x+i*Cols+j); } 25 포인터와배열 x = 12 FF 78 … n[0][0]=1 n[0][1]=2 n[0][2]=3 n[1][0]=4 n[1][1]=5 n[1][2]=6 C Programming
aryfunction 2. c 2차원 배열을 매개변수로 하는 다양한 함수처리 예 #define Rows 2 #define Cols 3 int sumary(int ary[][Cols], int SIZE); //SIZE = Rows, 2차원적인 접근처리 int sumaryp(int (*ary)[Cols], int SIZE); int sump(int *ary, int SIZE); //SIZE = Rows * Cols, 1차원적 접근처리 int main(void) { int i = 0, j=0, sum=0, ary. Length; int point[Rows][Cols] = {{95, 88, 76} {54, 85, 33}}; ary. Length = Rows * Cols; printf("배열 point[i][j]를 이용하여 원소 값을 출력 n"); for (i = 0; i < Rows; i++) { for (j = 0; j < Cols; j++) { printf("%d ", point[i][j]); sum += point[i][j]; } printf("n"); } printf("n메인에서 구한 합은 %dnn", sum); printf("함수 sumary()에서 구한 합은 %dn", sumary(point, Rows)); printf("함수 sumaryp()에서 구한 합은 %dn", sumaryp(point, Rows)); printf("함수 sump 2()에서 구한 합은 %dn", sump 2(point, Rows)); printf("함수 sump()에서 구한 합은 %dn", sump(point, ary. Length)); } 26 포인터와배열 C Programming
/* aryfunction 2. c 계속 */ int sumary(int ary[][Cols], int SIZE) { int sum = 0, i = 0, j=0; for (i = 0; i < SIZE; i++) { for (j = 0; j < Cols; j++) { sum += ary[i][j]; } } return sum; } int sump(int *ary, int SIZE) { int sum = 0, i = 0; for (i = 0; i < SIZE; i++) { sum += (*ary++); } return sum; } int sumaryp(int (*ary)[Cols], int SIZE) { int sum = 0, i = 0, j=0; for (i = 0; i < SIZE; i++) { for (j = 0; j < Cols; j++) { sum += ary[i][j]; } } return sum; } 27 포인터와배열 C Programming
C Programming 문자열을 매개변수로 사용 pointer. Param 3. c 문자열을 매개변수로 사용한 함수구현 #include <stdio. h> void myputs (char *x); void mystrcpy (char *x, char *y); main() { char str 1[20] = "string test", str 2[20]; myputs(str 1); //문자배열을 실매개변수로 사용 mystrcpy(str 1, str 2); printf("nstr 1=%sn", str 1); printf("str 2=%sn", str 2); } void myputs (char *x) { // 문자열의 문자를 하나씩 출력하는 함수 while(*x) printf("%c", *x++); } void mystrcpy (const char *x, char *y) { // 문자열 복사함수 , 보호를 위한 x는 const로 상수처 리 while(*x) *y++ = *x++; *y='