将字符串的一部分复制到另一个字符串

时间:2019-01-12 05:55:32

标签: c string

我有一串单词,它们之间有单词分隔符,在另一个字符串中,我想将主字符串中的单词一个一个地放,将单词与其他字符串进行比较,然后将其放入一个字符串数组中。

所以基本上我有 1)一组单词,以及 2)一串字  的形式(单词-单词-单词...),我需要做的就是检查这些单词之一是否在单词数组中。如果是,则将其删除。 我将通过定义一个新的'char'类型变量,遍历我的主要句子,并且只要还没有到达单词分隔符,就将该单词添加到新字符串中。使用另一个函数,我检查该单字字符串是否存在于数组中。如果没有,我将单词添加到临时数组中,然后释放字符串并重复直到句子结尾。但我似乎做得不好(我刚刚开始研究字符,字符数组等主题)

void delete_words(char *words[],int n, char *sentence ){
int m=strlen(sentence);
char tmp[m];
char * str=(char*)malloc(sizeof(char)*(MAX_LEN));
int i=0,end=0,k,z;
for(k=0; k<m; k++)
{
    z=0;
    while(*sentence && sentence[i]!= WORD_SEPERATOR)
    {
        str[z]=sentence[i];
        i++;
        z++;
    }

    if(is_string_in_array(words,n,str)==false)
    {
        int len=strlen(str);
        strcpy(tmp+k,str);
        end=end+len;
        tmp[end]=WORD_SEPERATOR;
        free(str);
    }}

我确实意识到这是完全错误的,并且我可以找到一些错误,但是我不知道如何解决它,因为正如我所说,这是我关于该主题的第一份作业。真的很感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

select_next_word将遍历字符串并尝试逐个提取单词,然后针对数组进行检查,如果不存在,则将其添加到目标字符串中

#include <stdio.h>
#include <String.h>

void select_next_word(char **buffer, char **next_word)
{
    *next_word = *buffer;
    while(**buffer != 0)
    {
        if(**buffer == '-')
        {
            **buffer = 0;
             (*buffer)++;
            break;
        }

        (*buffer)++;
    }
}

int main()
{
    #define CHECK_ARR_SIZE  2
    char check_arr[CHECK_ARR_SIZE][32] = {"this", "test"}; //make second dim large enough
    char test[] = "this-is-a-test-string";
    char dest[32]; //be sure it is large enough
    char *next_word;
    char *temp = test;

    while(1)
    {
        select_next_word(&temp, &next_word);
        int i = 0;
        int word_found = 0;
        for( ; i < CHECK_ARR_SIZE ;i++)
        {
            if(strcmp(next_word, check_arr[i]) == 0)
            {
                word_found = 1;
                break;
            }
        }

        if(!word_found)
        strcat(dest, next_word);
        if(*temp == 0)
         break;
    }

    printf(dest);
}
相关问题