将字符串中的单词分割,存入二维数组后输出

思路

每次内部循环需要找到一个单词,将其存入数组。外循环遍历至字符串末尾结束。

代码

/*************************************************************************
    > File Name: word_split.c
    > Author: KrisChou
    > Mail:zhoujx0219@163.com 
    > Created Time: Sun 24 Aug 2014 10:42:48 AM CST
 ************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 128
#define WORD_CNT 128
#define WORD_LEN 256

static int my_isspace(char c)
{
    if(c == ' ' || c == '
' || c == '	' || c == 'v')
        return 1;
    else
        return 0;
}

static void show(char(*words)[WORD_LEN],int cnt)
{
    int index;
    for(index = 0; index < cnt; index++)
    {
        printf("%15s",words[index]);
    }
}

static void word_save(char *line, int bg, int end, char *dest)
{
    int index,index_dest;
    for(index = bg,index_dest = 0; index <= end;index++,index_dest++ )
    {
        dest[index_dest] = line[index];
    }
    dest[index_dest] = '';
}

static int word_split(char *line,char(*words)[WORD_LEN])
{
    int bg,end;
    int word_cnt;
    bg = 0;
    word_cnt = 0;
    while(line[bg] != '')
    {
        while(my_isspace(line[bg]))
        {
            bg++;
        }
        if(line[bg] == '')
        {
            break;
        }
        end = bg;
        while(line[end] != '' && !my_isspace(line[end]))
        {
            end++;
        }
        word_save(line,bg,end-1,words[word_cnt++]);
        bg = end;
    }
    return word_cnt;
}

int main(int argc, char *argv[])
{
    int cnt;
    char line[N];
    char words[WORD_CNT][WORD_LEN];
    while(fflush(stdin),gets(line) != NULL)
    {
        cnt = word_split(line,words);
        show(words,cnt);
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/jianxinzhou/p/3932682.html