实验2

p193:

7题:

编写函数 delstr(char *pc,int im,int in),删除字符串中制定位置im处开始的in个字节,删除成功函数返回被删字符串,否则返回空值。

 

#include<stdio.h>
#include<string.h>
char *delstr(char *pc,int im,int in);
int main()
{
    char str[50];
    int a,b;
    char *p;
    printf("请输入一串字符:\n");
    gets(str);
    printf("请输入删除的位置和个数:\n");
    scanf("%d%d",&a,&b);
    p=delstr(str,a,b);
    if(p==NULL)
    {
        printf("超出范围。"); 
    }
    else
    {
        puts(p);
    }
    return 0;
}
char *delstr(char *pc,int im,int in)
{
    char *temp1=pc+im-1,*temp2=temp1+in-1;
    char *end=NULL,*p;
    static char a[50];
    int len=0,i=0; 
    len=strlen(pc);
    end=pc+len-1;
    if(temp1>end||temp2>end)
        return NULL;
    else
    {
        for(;temp1<=temp2;temp1++)
        {
            a[i++]=*temp1;
            *temp1=' ';
        }
    }
    p=a;
    return p;
}

 

8题:

编写函数strlink(char *pv1,char *pc2),把字符串pc2连接到pc1的后面,形成一个完整的字符串。

#include<stdio.h>
void strlink(char *pc1,char *pc2);
int main()
{
    char a[50]={"hello world"};
    char b[10];
    puts(a); 
    printf("请输入一串字符,将连接到上面字符串中:");
    gets(b);
    strlink(a,b);
    puts(a);
    return 0;
 } 
 void strlink(char *pc1,char *pc2)
 {
     for(;*pc1!='\0';pc1++);
     for(;*pc2!='\0';pc1++,pc2++)
     {
         *pc1=*pc2;
     }
     *pc1='\0';
 }

9题:

编写函数char *huiwen(char *pc),检查字符串pc是否是回文,如果是返回字符串“yes”,否则返回“no”.如:abcba是回文。

#include<stdio.h>
#include<string.h>
char *huiwen(char *pc);
int main()
{
    char a[50];
    char *link=NULL;
    printf("请输入一串字符,将判断其是否是回文:\n");
    gets(a);
    link=huiwen(a);
    puts(link);
    return 0;
}
char *huiwen(char *pc)
{
    int len=0,flag=1;
    char *temp=NULL,*str=NULL;
    len=strlen(pc);
    temp=pc+len-1;
    for(;pc!=temp;pc++,temp--)
    {
        if(*pc!=*temp)
            flag=0;
    }
    if(flag)
    {
        str="yes";
    }
    else
    {
        str="no";
    }
    return str; 
}

总结: 

 1 .char a[]="hello world";
这里数组是字符串变量,是可以改变的。
但是 char *str="hello world";  "hello world"是字符串常量,用一个指针指向了字符串常量,但是,常量值是不能改变的,所以,你要修改它的值就会出错。 
2.编写连接函数时,被连接的字符串数组要定义的足够长,不然会越界。
3.在返回指针时,如果指针指向的是常量,则可以返回成功,否则当函数调用结束后,栈被释放,无法找到指针指向的内容。
posted @ 2017-03-16 17:18  T.X  阅读(258)  评论(0)    收藏  举报