| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1877 人关注过本帖
标题:指针数组和数组的区别
取消只看楼主 加入收藏
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
结帖率:62.5%
收藏
已结贴  问题点数:20 回复次数:2 
指针数组和数组的区别
这是一个删除子串的函数,如果把char str1[]= "123456789";改为char *str1="123456789";对函数体怎么改才能实现同样的功能
程序代码:
#include <stdlib.h>
#include <stdio.h>

#define TRUE  1
#define FALSE 0

char *del_substr(char *str, char const *substr);

int main()
{
    char        str1[]= "123456789";
    char const  * str2= "345";
    printf("before delet:          %s\n", str1);
    printf("will delete the chars: %s\n", str2);
    del_substr(str1, str2);
    printf("After delete:          %s\n", str1);

    system("pause");
    return 0;

 }

char *del_substr(char *str, char const *substr)
{
    char const * subP;
    char *strP;
    char *temp;
    int  flag = TRUE;
    strP = str;

    if( (!*str) || *substr=='\0' )             //判断两个字符串是否有空字符串
       return FALSE;                           //(!*str)和*str=='\0'是等价的

    while(*strP)
    {
        temp = strP;
        subP = substr;
        for(; *subP; subP++)
        {
            if(*strP == *subP)
            {
                strP++;
                flag = FALSE;
                continue;
            }
            break;
        }

        if(*subP == '\0')
        {
            while(*temp++ = *strP++)
                ;
            break;
        }

        if(flag)
            strP++;
    }
    return TRUE;
}

搜索更多相关主题的帖子: 数组 char str const printf 
2017-11-01 15:00
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
收藏
得分:0 
回复 3楼 吹水佬
谢谢诶  那你看一下我这个换成 char str1[]定义  但是printf("%s\n",rever);这个怎么输出不了,,谢谢  
程序代码:
#include <stdlib.h>
#include <stdio.h>

void reverse_string(char *str2);
int main()
{
    char   str1[]= "123456789";
    printf("before delet :          %s\n", str1);
    reverse_string(str1);

    system("pause");
    return 0;
}
void reverse_string(char *str2)
{
    char *rever;
    int   count;
    count=strlen(str2);
    printf("%d\n",count);
    for(;count>-1;count--)
        *rever++=*(count+str2);
    printf("%s\n",rever);
}

2017-11-01 16:48
Feiyiyi1
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2017-10-22
收藏
得分:0 
回复 5楼 吹水佬
谢谢诶
你写的这个不可以
会有警告,而且输出不了
警告:
/home/zhangfeifei/文档/qt学习/明解c语言/print-6/main.c:298: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
     *p=a;
       ^

我找了一下最后把*p前面的*拿掉 结果就可以了
程序代码:
#include <stdio.h>
#include <string.h>
void reverse_string(char *str2);
int main()
{
    char   str1[]= "12345678";
    printf("before delet :          %s\n", str1);
    reverse_string(str1);
    system("pause");
    return 0;
}
void reverse_string(char *str2)
{
    char  *p;
    char   a[20];
    *p=a;
    int   count;
    count=strlen(str2);
    printf("%d\n",count);
    printf("最后一个字符:%c\n",*(str2+count-1));
    for(;count>-1;count--)
        *p++=*(count+str2-1);
    *p='\0';
    printf("%s\n",a);
}

2017-11-01 20:23
快速回复:指针数组和数组的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023150 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved