ch 21-5

암영·2022년 10월 24일
0

c언어

목록 보기
21/21

문자열을 복사하는 함수들:strcpy,strncpy

strcpy_s(destination(복사본),sizebyte,source(원본));
strncpy_s(destination(복사본),sizebyte,source(원본),maxcount);

strncpy_s:복사를 진행하되 sizeof(str3)가 반환한값에 해당한 문자수만큼 반환
strncpy_s(str3, sizeof(str1), str1,sizeof(str3));

#include <stdio.h>
#include <string.h>

int main() {
	char str1[20] = "1234567890";
	char str2[20];
	char str3[5];

	strcpy_s(str2,sizeof(str1), str1); //strcpy는 불안정해서 strcpy_s로 변환해서 쓰면됨!
	puts(str2);
	strncpy_s(str3, sizeof(str1), str1,sizeof(str3));
	puts(str3);
	return 0;
}

문자열을 덧붙이는 함수:strcat,strncat

#include <stdio.h>
#include <string.h>

int main() {
	char str1[20] = "first~";
	char str2[20] = "Second~";
	char str3[20] = "simple num";
	char str4[20] = "1234567890";

	strcat_s(str1,sizeof(str2), str2);
	puts(str1);

	strncat_s(str3,sizeof(str4), str4, 7);
	puts(str3);


}

문자열을 비교하는 함수들:strcmp,strncmp

strcmp(str1, str2)
두문자열의 내용이 같으면 0
str1이 더크면 양수 반환
str2가 더 크면 음수 반환
문자열의 크고 작음은 아스키코드 값으로 결정됨

#include <stdio.h>
#include <string.h>

int main() {
	char str1[20];
	char str2[20];
	printf("문자열 1번입력");
	scanf_s("%s", str1,20); //str1의 크기보다 더 많은 야의 바이트를 설정하면 오류 날수 있음!
	printf("문자열 2번입력");
	scanf_s("%s", str2,20);

	if (!strcmp(str1, str2)) {
		puts("두문자열은 완벽히 동일합니다");
	}
	else
	{
		puts("두문자열은 완벽히 동일하지않습니다");
		if (!strncmp(str1, str2,3)) {
			puts("그러나 앞세글자는 동일합니다");
		}
	}
	
	//char str3[20] = "simple num";
	//char str4[20] = "1234567890";
	return 0;


}

그이외의 함수들

<stdlib.h>에 선언된 함수들
int atoi(cont char *str) :문자열 내용을 int형으로 반환
long atol(cont char *str) :문자열 내용을 long형으로 반환
double atof(cont char *str) :문자열 내용을 double형으로 반환

#include <stdio.h>
#include <stdlib.h>

int main() {
	char str[20];
	printf("정수입력");
	scanf_s("%s", str, 10);
	printf("%d\n", atoi(str));

	
	printf("실수입력");
	scanf_s("%s", str, 10);
	printf("%g\n", atof(str));

	return 0;
}
#include <stdio.h>
#include <math.h>
//구조체=구조화된 변수묶음 즉, 좌표와 학생정보와 같이 쌍으로 묶음으로 표현되면 좋은 자료를 묶음 변수로 만들어주는 자료형

struct point {
	int xpos;
	int ypos;

};

int main() {
	struct point p1, p2;
	double distance;
	fputs("point1 pos", stdout);
	scanf_s("%d %d", &p1.xpos, &p1.ypos);

	fputs("point2 pos", stdout);
	scanf_s("%d %d", &p2.xpos, &p2.ypos);

	distance = sqrt((double)((p1.xpos - p2.xpos) * (p1.xpos - p2.xpos) + (p1.ypos - p2.ypos) * (p1.ypos - p2.ypos)));

	printf("두점사이의 거리는 %g 입니다", distance);
	return 0;
}
profile
just do! -얼레벌레 굴러가는 공대생

0개의 댓글