习题 8.7 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

C程序设计(第四版) 谭浩强 习题8.7 个人设计

习题 8.7 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

代码块:

方法1:

#include 
void cut(char *s, int x);    //定义剪切函数
int main()
{
    char str[20], *p=str;
    int m;
    printf("Please enter string: ");      //输入字符串
    gets(p);
    printf("Please enter cut number: ");  //输入要剪切开始的字符数
    scanf("%d", &m);
    cut(p, m);                            //调用剪切函数
    return 0;
}
//剪切函数
void cut(char *s, int x)
{
    char *i, cc[20], *j=cc;
    for (i=s+x-1; *j++=*i++;);
    printf("New string: %s\n", cc);
}

方法2:(利用动态内存分配)

#include 
#include 
#include 
char *str_cpy(char *str, int sm);                         //定义复制函数
int main()
{
    char *string;
    string=(char *)malloc(80*sizeof(char));               //动态分配字符串空间
    printf("Please enter string: ");                      //此两行输入字符串
    gets(string);
    int m;
    printf("Please enter charactor number: ");            //输入复制的字符开始数
    scanf("%d", &m);
    printf("New string: %s\n", str_cpy(string, m));       //输出新字符串
    system("pause");
    return 0;
}
//复制函数
char *str_cpy(char *str, int sm)
{
    char *p;
    int i;
    p=(char *)malloc(80*sizeof(char));
    for (i=0, p=str+sm-1; *p; *(str+i++)=*p++);
    *(str+i)='\0';
    return str;
}

你可能感兴趣的:(C程序设计,(第四版),谭浩强,课后答案)