c primer 플러스 문제 풀이 (4)

16016 단어 Prim
p319.3
 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 #include<ctype.h>

 4 #include<string.h>

 5 void deliver(char *a1, char *a2, int n);

 6 

 7 int main(void)

 8 {

 9     int n;

10     char str1[81], *ptr, ar[81];

11     ptr=gets(str1);

12     n=strlen(ptr);

13     deliver(ar, ptr, n);

14     puts(ar);

15 

16     system("pause");

17     return 0;

18 }

19 

20 void deliver(char *a1, char *a2, int n)

21 {

22     int i;

23     for(i=0; i<n; i++){

24         *(a1+i)=*(a2+i);

25         if(isspace(*(a1+i)))

26             break;

27     }

28     if(i==n)

29         *(a1+i)='\0';

30     else

31         *(a1+i+1)='\0';

32 }

p320.5
 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 int is_within(char *ar, char ch);

 4 

 5 int main(void)

 6 {

 7     char ar[81], ch;

 8     do

 9     {

10     puts("input a range string:");

11     gets(ar);

12     puts("input match char(enter q to quit):");

13     ch=getchar();

14     getchar();

15     if(is_within(ar, ch)) puts("match");

16     else puts("can't find");

17 

18     }while(ch!='q');

19 

20     system("pause");

21     return 0;

22 }

23 

24 int is_within(char *ar, char ch)

25 {

26     while(*ar!='\0')

27         if(*ar==ch)

28             return 1;

29         else

30             ar++;

31     return 0;

32 }

p320.6
 1 #include<stdio.h>

 2 #include<stdlib.h>

 3 #include<string.h>

 4 char *strncpy(char *s1, char *s2, int n);

 5 

 6 int main(void)

 7 {

 8     char s1[81], s2[81];

 9     int n;

10     puts("please input a range string for s2:");

11     gets(s2);

12     puts("please input a range string for s1:");

13     gets(s1);

14     puts("please input a number of copies:");

15     scanf("%d", &n);

16     getchar();

17 

18     strncpy(s1, s2, n);

19     puts(s1);

20 

21     system("pause");

22     return 0;

23 }

24 

25 char *strncpy(char *s1, char *s2, int n)

26 {

27     int i;

28 

29     if(n<=strlen(s2)){

30         for(i=0; i<n; i++)

31             *(s1+i)=*(s2+i);

32     *(s1+i)='\0';

33     }

34     

35     else if(n>strlen(s2)){

36         for(i=0; i<strlen(s2); i++)

37             *(s1+i)=*(s2+i);

38         while(i<n){

39             *(s1+i)='\0';

40             i++;

41         }

42     }

43     return s1;

44 }

답 을 참고 하여 준 strncpy () 의 정 의 는 다음 과 같다.
 1 char *mystrncpy(char *p1, char *p2, int n)

 2 {  

 3    char *p=p1;  

 4    while(*p1++ != '\0') continue; 

 5    *--p1 = *p2; 

 6    n--;  

 7    while(n>0 && *p2 != '\0') {   

 8        *++p1 = *++p2;  

 9        n--; 

10    } 

11    return p;

12

좋은 웹페이지 즐겨찾기