#include <stdio.h>
main() {
//문자형 포인터를 사용해서 수정안됨
char *str = "Simple string";
printf("1.puts test -----\n");
puts(str);//출략하고 엔턱키 자동으로 실행됨
puts("so simple string");//그냥 문자열 직접 전달가능
printf("2.fputs test ---\n");
fputs(str, stdout);
printf("\n");//str 문자열 출력하는데 표준 출력버퍼 사용
fputs("so simple string", stdout);
printf("\n");//출력하는 문자열을 직접적으로 전달가능한데
printf("3.end of main --- \n");
return 0;
}
char string[7];
gets(string);
fgets(string,sizeof(string),stdin);
puts(string);
return 0;
모르겟다 이거 컴파일 안되거 확인 못햇는데 그냥 처외우면 될듯
char string[7];
for(int i = 0; i < 3; i++){
fgets(string,sizeof(string),stdin);
printf("read %d : %s",i,string);
}
fget 사용하면 마지막에 엔터키도 먹어서 출력하는 거 같다 공백포함 입력 시발 가능
#include<stdio.h>
#include<string.h>
#define _CRT_SECURE_NOWARNINGS
void clearinputStream(void){
while(getchar() !='\n');
}
int main(void){
char perId[7];
char name[10];
fputs("please input your id ",stdout);
fgets(perId,sizeof(perId),stdin);
clearinputStream();
fputs("please input your name",stdout);
fgets(name,sizeof(name),stdin);
printf("주민번호 : %s\n",perId);
printf("사람이름 : %s\n",name);
}
받으려는 문자열보다하나 크게 선언해야 널 문자가 삽입된다 이를 위해서 주민 번호를 받는 문자열도 하나 크게 생성함
**char** str[] = "1234567";
printf("%u\n",strlen(str));
}
문자열의 길이를 반환하는 함수인 strlen(str) 은 문자열에서 널문자를 길이에서 제외한 길이를 반환한다.
**char** str1[30] = "simple String";
**char** str3[30];
strcpy(str3,str1);//strcpy함수를 호룿ㄹ하는 경우에는 배열의 범위를 넘어서 복사가 진행될 위험이 있다.
printf("%s\n",str3);//str1의. 문자열을 str3에 복사하고 복사가 완료된 문자열의 주소값을 반환한다.
**char** str4[40];
strncpy(str4,str3,**sizeof**(str3));// str3의 문자열은 str4에 복사하는데 str3의 사이즈 많큼 복사를 씨함크기 만큼 복사를 진행해서 오류가 발생하지 않는다.
문자열을 복사하는 함수인데 이를 이용하기 위해서 사용하는 strcpy는 문자열의 메모리를 고려하지 않고 복사를 진행함
strncp는 문자열의 복사를 위해서 사용하는 함수인데 이때 복사를 진행할 함수의 크기를 지졍가능함.
clearinputStream();
char str1[20] ="1234567890";
char str2[20];
char str3[5];
strcpy(str2,str1);
puts(str2);
strncpy(str3,str1,sizeof(str3));
puts(str1);
strncpy(str3,str1,sizeof(str3)-1);//널문자를 고려해서 하나 작게 설정해서 문자열을 복사함.
str3[strlen(str3)-1] = 0;
puts(str1);
맥에서 출력이 이상한건지 전혀 출력이 제대로 들어맞지 않는다 쫀나 이상하나
하여간 책에서는
두 번째 strncpy(복사받는 문자열, 복사하려는 문자열, 복사하는 사이즈) - 이런식으로 파라미터를 지정하는데
위에 사이즈를 전체 문자열로 지정하지 않으면 문자열 끝에 널문자가 삽입되지 않아서 따로 널 문자를 삽입해야된데요
char str11[20] = "first";
char str12[20] = "second";
char str13[20] = "simple num: ";
char str14[20] = "1234567890";
strcat(str11,str12);//앞 문자열의 널문자부터 concatation이 일어난다.
puts(str11);
strncat(str13,str14,7);//앞 문자열의 널문자부터 concatation이 일어나는데 널 문자 제외 7가를 붙이고 마지막에 널문자 를 삽입함.
puts(str13);
printf(" result : %d\n",strcmp("qkrwlsdms","qkrekwjd"));
printf("result2 : %d", strncmp("qkrwlsdms","qkrekwjd",8));
return 0;
사전순으로 문자를 비교해서 반환하는 함수이다. 두 문자열이 다르면 0이 아닌 다른수를 반환한다.
strcmp(왼쪽문자열, 오른쪽 문자열) 왼쪽 문자열이 사전순으로 더 크면 0 보다 큰값을 반환하고
오른쪽 문자열이 더 크면 0보다 작은 값을 반환한다. 다르게 말하면 왼쪽 문자열이 순서가 더 크면 양수를 반환하는건데 이 때 사전순에서 순서가 더 크다는 것은 문자열의 사전에서 뒤에 나오는 것을 의미한다.
l
char string[30];
char string2[30];
printf("문자열을 두개 입력하세요");
scanf("%s",string);
clearinputStream();
scanf("%s",string2);
if(strcmp(string, string2)==0){
fputs("두 문자열은 동일합니다\n",stdout);
}else{
fputs("두 무자열은 동일하지 않습니다\n",stdout);
}
그냥 사용하는 예시 작성한건데 할말은 없다