| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 406 人关注过本帖, 1 人收藏
标题:用指针分割字符串的问题!!!!!
只看楼主 加入收藏
晓笙残月
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2012-10-14
结帖率:66.67%
收藏(1)
已结贴  问题点数:20 回复次数:5 
用指针分割字符串的问题!!!!!
一个字符中有若干%,按%分割,怎么作,不能用系统函数,只能用指针!!!还要打印出%个数和分割的字符串内容!
搜索更多相关主题的帖子: 分割 字符串 
2012-11-28 17:48
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:2 
你找找%符号的ascii码,然后移动指针去逐个判断

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-28 18:51
Fisher~
Rank: 4
等 级:业余侠客
帖 子:93
专家分:222
注 册:2012-11-10
收藏
得分:3 
定义一个数组指针,比如char (*p)[50];令p[0]指向字符串开头,一个个读取字符,判断如果是%计数器加一,并且将上一个%后面到这个%之间的字符存入p[i]中,输出时直接puts(p[i]);
2012-11-30 17:13
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define MAX_BUFFER 18

int main(void)
{
    char *buffer = NULL;
    char *temp[28] = {NULL};
    int count = 0;
    int zi_count = 0;
    int count2 = 0;
    int size_temp = 0;
    int i = 0;
    int j = 0;

    buffer = (char*)malloc(MAX_BUFFER);
    while((buffer[count] = getchar()) !='\n')
    {
        if(buffer[count] == '%')
        {
            zi_count++;
            count2 = count;
        
            /*读取上一个单词*/
            while(buffer[--count2] != '%' && count2>=0)
            size_temp++;

            temp[i] = (char*)malloc(size_temp+1);
   
            while(buffer[++count2] != '%')
                temp[i][j++] = buffer[count2];
            temp[i++][j] = '\0';
            j = 0;
        }
        count++;
    }

    /*输出*/
    for(j=0;j<i;j++)
        printf("%s\n",temp[j]);
    printf("Have %d of %c\n",zi_count,'%');

    return 0;
}

这个做的不是太好,必须得在输入最后加上一个'%'
还可以改进改进,楼主在想想吧,加油

I have not failed completely
2012-12-02 18:48
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define MAX_BUFFER 30

int main(void)
{
    char *buffer = NULL;
    int count = 0;
    int zi_count = 0;
    int i = 0;

    buffer = (char*)malloc(MAX_BUFFER);
    while((buffer[count] = getchar()) !='\n')
    {
        if(buffer[count] == '%')
        {
            buffer[count] = '\n';
            zi_count++;
        }
        count++;
    }
    buffer[count] = '\0';

    /*输出*/
        printf("%s\n",buffer);
    printf("Have %d of %c\n",zi_count,'%');

    return 0;
}

这是超级简化的...
不过不能精确的控制每个单词

I have not failed completely
2012-12-02 19:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <conio.h>

unsigned int Section(const char* s, char delimiter);
void Pause(void);

void main(void)
{
    const char delimiter = '%';
    printf_s("\nthe %c count is %u\n", delimiter, Section("abc%fdfd%  dfro9 043cv %dfdldsfd", delimiter));

    Pause();
}

unsigned int Section(const char* s, char delimiter)
{
    unsigned int count = 0;

    while (*s != '\0')
    {
        if (*s != delimiter)
        {
            putchar(*s);
        }
        else
        {
            ++count;
            putchar('\n');
        }
        ++s;
    }
    putchar('\n');

    return count;
}

void Pause(void)
{
    printf_s("Press any key to return...");
    _getch();
}

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2012-12-02 21:15
快速回复:用指针分割字符串的问题!!!!!
数据加载中...
 
   



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

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