12장 문자열
연습문제1
1. char *ps
2. 2번
3.
banana
anana
nana
ana
na
a
4.
#include<stdio.h>
int main()
{
char ani[20];
char why[80];
printf("좋아하는 동물: ");
scanf("%s", ani);
getchar();
printf("좋아하는 이유: ");
fgets(why, sizeof(why), stdin);
printf("%s is %s", ani, why);
}
5.
#include<stdio.h>
int main()
{
char name[20];
char pnum[20];
char ads[80];
printf("이름: ");
fgets(name, sizeof(name), stdin);
name[strlen(name) - 1] = '\0';
printf("전화번호: ");
fgets(pnum, sizeof(pnum), stdin);
pnum[strlen(pnum) - 1] = '\0';
printf("주소: ");
fgets(ads, sizeof(ads), stdin);
ads[strlen(ads) - 1] = '\0';
printf("%s, %s, %s\n",name,pnum,ads);
return 0;
}
연습문제2
1. 2,5,6번
2. 2번
3. pineapple ,9
4
#include<stdio.h>
int main()
{
char str1[80] = {0,};
char str2[80] = { 0, };
char *pa, *pb;
printf("두 단어 입력: ");
scanf("%s %s", str1,str2);
if (strlen(str1) > strlen(str2)) pa = str1;
else pa = str2;
if (strcmp(str1, str2) < 0) pb = str1;
else pb = str2;
printf("길이가 긴 단어: %s\n", pa);
printf("사전에 먼저 나오는 단어: %s\n", pb);
return 0;
}
5.
#include<stdio.h>
#include<string.h>
int main()
{
char str[80] = { 0, };
char res[80] = { 0, };
char *star = "**********";
int len;
printf("단어입력: ");
scanf("%s", str);
len = strlen(str);
if (len <= 5)
strcpy(res, str);
else
{
strncpy(res, str, 5);
res[5] = '\0';
strncat(res, star, len - 5);
}
printf("입력한 단어: %s,생략한 단어: %s\n", str, res);
return 0;
}
도전문제1
#include<stdio.h>
void func(char *max, char *mid, char *min);
void swap(char *str1, char *str2);
int main()
{
char max[20] = { 0, };
char mid[20] = { 0, };
char min[20] = { 0, };
printf("세 단어 입력 : ");
scanf("%s %s %s", max, mid, min);
func(max,mid,min);
printf("%s, %s, %s\n", max, mid, min);
return 0;
}
void func(char *max, char *mid, char *min)
{
if (strcmp(max, mid) > 0)
{
swap(max, mid);
}
if (strcmp(mid, min) > 0)
{
swap(mid, min);
}
if (strcmp(max, mid) > 0)
{
swap(max, mid);
}
}
void swap(char *str1, char *str2)
{
char temp[20] = { 0, };
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
도전문제2
#include<stdio.h>
#include<string.h>
void func(char *str, char *res);
int main()
{
char str[20];
char res[80] = { 0, };
func(str, res);
return 0;
}
void func(char *str, char *res)
{
while (1)
{
printf("단어입력: ");
scanf("%s", str);
if (strcmp(str, "end") == 0) break;
strcat(res, " ");
strcat(res, str);
printf("현재까지의 문자열 : %s\n", res);
}
}
도전문제3
#include<stdio.h>
#include<string.h>
void func();
int check(char *pstr, char *psearch, int len);
int main()
{
func();
return 0;
}
void func()
{
int eq,len;
char str[100];
char search[20];
printf("문자열 입력: ");
gets(str);
while (1)
{
printf("검색할 문자열 입력(종료는 end): ");
gets(search);
len = strlen(search);
if (strcmp(search, "end") == 0) break;
//printf("%s\n%s", str, search);
eq = check(str, search,len);
printf("검색 결과 : %d\n", eq);
eq = 0;
}
return eq;
}
int check(char *pstr,char *psearch,int len)
{
int i = 0, cnt = 0;
char *pcheck; //검사 위치 변수
while (pstr[i] != '\0')
{
pcheck = pstr + i;
if (strncmp(pcheck, psearch, len) == 0)
{
cnt++;
i += len;
}
else i++;
}
return cnt;
}
추가문제
1. strlen 함수
#include<stdio.h>
void func_gets(char *str);
int my_strlen(char *str);
int main()
{
char str[80];
int res;
func_gets(str);
res = my_strlen(str);
printf("입력된 문자열의 길이(): %d\n", res);
return 0;
}
void func_gets(char *str)
{
printf("문자열 입력(공백포함): ");
gets(str);
}
int my_strlen(char *str)
{
int i = 0;
while (1)
{
if (str[i] == '\0') break;
i++;
}
return i;
}
2.
//strcat()함수
#include<stdio.h>
void func_gets(char *str);
void my_strcat(char *str1, char *str2);
int main()
{
char res[80] = { 0, };
char cp[20] = { 0, };
func_gets(res);
func_gets(cp);
my_strcat(res, cp);
printf("변경 후: %s\n", res);
return 0;
}
void func_gets(char *str)
{
printf("문자열 입력(공백포함): ");
gets(str);
}
void my_strcat(char *str1,char *str2)
{
while (*str1 != '\0') str1++;
while (*str2 != '\0')
{
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
}
3.
//strcpy()함수
#include<stdio.h>
char *my_strcpy(char *str1, char *str2);
int main()
{
char res[80] = "strawberry";
printf("변경전: %s\n", res);
my_strcpy(res, "apple");
printf("변경후: %s\n", res);
printf("다른 문자열대입: %s\n", my_strcpy(res, "kiwi"));
return 0;
}
char *my_strcpy(char *str1, char *str2)
{
char *po = str1;
while (*str2 != '\0')
{
*str1 = *str2;
str1++;
str2++;
}
*str1 = '\0';
return po;
}
'programming > c,c++' 카테고리의 다른 글
이것이 C언어다::16장 (0) | 2020.03.26 |
---|---|
이것이 C언어다::13장 (0) | 2020.03.26 |
이것이 C언어다::11장 (0) | 2020.03.26 |
피드백)이것이C언어다::10장 (0) | 2020.03.26 |
이것이 C언어다::10장 (0) | 2020.03.26 |