반응형
#include <stdio.h> //4.문자열을 입력 받을 때 키 입력 횟수 제한하기 int GetMyString(char buffer[] , int limit){ int i; for (i = 0; i < limit; i++) { //최대 개수만큼 반복 buffer[i] = getchar(); if (buffer[i] == '\n') { //엔터 키가 체크되면 사용자 입력이 완료되었다는 뜻 buffer[i] = 0; // 0 을 담아준다. return 1; // 정상적으로 입력이됨 } } //반복 문을 빠져나왔다는 것은 입력 개수를 초과했다는 뜻 buffer[i] = 0; rewind(stdin); return 0; } int main(int argc, const char * argv[]) { //1. //getchar 함수를 사용하여 키보드에서 문자 한개 입력받기 int input_data; //표준 입출력 함수를 사용해서 문자를 한개 입력 받음 input_data = getchar(); //입력받은 문자를 출력 printf("input : %c \n" , input_data); //2. getchar 함수를 사용하여 문자 한 개씩 두번 입력받기 - rewind 함수를 사용하여 표준 입력 버퍼 초기화하기 int input_data; //표준 입출력 함수를 사용해서 문자를 한개 입력 받음 input_data = getchar(); rewind(stdin);// 표준입력 버퍼에 있는 모든 입력값을 제거함 printf("첫번째 input : %c \n" , input_data); input_data = getchar(); rewind(stdin); printf("두번째 input : %c \n" , input_data); //3. gets 함수로 문자열 입력받기 //문자열은 마지막에 null 문자 0을 포함해야 하므로 최대 9개의 문자까지 저장 가능함. char input_string[10]; //gets(input_string); fgets(input_string , 10 , stdin); //문자열을 입력받아 input_string에 저장함. printf("input : %s \n" ,input_string); //4.문자열을 입력 받을 때 키 입력 횟수 제한하기 char temp [10]; int state; //사용자에게 최대 9개 까지만 입력 받겠다고 제한함. state = GetMyString(temp, 9); if (state == 1) { printf("input : %s \n" , temp); //정상 입력함 }else{ printf("input : %s -> out of range \n" , temp); //범위를 초과함 } //5. 문자열 형식의 숫자를 정수로 변환하기 //pos_num은 각 자릿수에 곱할 숫자, num은 정수로 변환될 숫자를 저장할 변수 int post_num = 100, num = 0 , i, temp_num; //정수로 변환할 문자열 char num_string[4] = "123"; for (i = 0 ; i < 3; i++) { //배열의 각항목을 문자에서 정수로 변경함 temp_num = num_string[i] - '0'; //정수화된 숫자에 자릿수에 해당하는 숫자를 곱해서 합산함. num = num + (temp_num * post_num); post_num = post_num / 10; } //변환된 정수 값을 출력 printf(" %s -> %d \n" , num_string , num); //6. 길이 제한 없이 문자열 형식의 숫자를 정수로 변환하기 int num = 0, count = 0; char num_string[4] = "123"; //문자열이 끝날때까지 반복함 while (num_string[count] != 0) { num = num * 10 + (num_string[count] - '0'); //반복할때마다 이전값에 10을 곱해서 자릿수를 증가. count++; //다음문자로 이동 } printf(" %s -> %d \n" , num_string , num); //7.scanf 함수를 이용해서 나이 입력받기 int num = 0; //정상적인 나이를 입력할때까지 무한반복을 사용 while (1) { printf("input age : "); //scanf 함수는 실행에 실패하면 0을 반환 if (scanf("%d" , &num) == 0) { rewind(stdin); printf("정확한 수를 입력하세요."); }else{ //0보다 크고 130 이하인 숫자만 정상적인 나이로 인정 if (num > 0 && num <= 130) { break; //정상적으로 입력이 되었기 때문에 반복문을 빠져나감. }else{ //나이의 범위가 잘못되었다고 출력 printf("incorrect age ! \n"); } } } printf("your age : %d \n " , num); //-----------------배열--------------- //배열 표기법의 한계 int data[2] = {0x12345678 , 0x12345678}; printf("%d \n" ,data[0]); // data[0] = 0x22; printf("%d \n" ,data[0]); //배열표기법 대신 포인터표기법 사용 *(char *) (data +1) = 0x22; //일시적으로 int* 형을 char* 형으로 변환함. printf("%d \n" ,data[0]); int tips = 0x12345678, sum; char *p; //1바이트씩 접근하기위해 char* 형 포인터를 선언함 p = (char *) &tips; // 형변환해서 char* 로 맞춤. sum = *(p +0) + *(p +1) + *(p +2) + *(p +3); printf("%d \n" , sum); return 0; }
do it c 언어 참고
반응형
댓글