【问题标题】:compare first word of a string array with a string in c将字符串数组的第一个单词与c中的字符串进行比较
【发布时间】:2014-11-10 23:02:56
【问题描述】:

我有一个字符串数组。

例子:-

array[0] = "book floor garden bank autumn";
array[1] = "daisy food yatch beach lottery";
char comp[]; 

我需要在循环中使用strcmp() 将每个索引中的第一个单词(例如:book、daisy...等)与字符串(例如:comp)进行比较。

问题是,有没有一种简单的方法可以从字符串中检索第一个单词。 strtok 是否有可能,或者是否有任何内置方法可以提供帮助。 这是我的任务的一部分,我只需要一个示例或关于如何完成它的建议。

【问题讨论】:

  • 我没明白,你想在这里做什么?
  • strtok 应该足够了。
  • saru95 试图检索数组中的第一个单词 [0] = book floor garden bank fall, example book
  • @hagubear 不会将整行分成单独的单词吗?我只需要第一个字
  • @hagubear 例如:- strtok(array[0], " ");??

标签: c string


【解决方案1】:
#include <stdio.h>
#include <string.h>

int main(){
    char *array[2];
    char comp[] = "daisy";
    int i;

    array[0] = "book floor garden bank autumn";
    array[1] = "daisy food yatch beach lottery";

    for(i=0;i<2;++i){
        char *p = strchr(array[i], ' ');
        if(!p)
            p = strchr(array[i], '\0');
        size_t len = p - array[i];
        char first_word[len+1];
        memcpy(first_word, array[i], len);
        first_word[len]=0;
        if(strcmp(first_word, comp)==0){
            puts("found it!!");
        }
    }
    return 0;
}

【讨论】:

    【解决方案2】:

    strtok 可以,你应该这样做:

    #include <string.h>
    
    int i = 0;
    char *token;
    int different;
    
    while(i < size){
        token = strtok(array[i], " ");
        different = strcmp(word, token);
        if(different){
            //do something
        }
        i++;
    }
    

    【讨论】:

    • 所以它会比较所有的单词对吗?不希望它比较所有的单词,只需要第一个。
    • 是的,它就是这样做的,它遍历每个索引并获取第一个单词
    • 非常感谢@Mauricio Trajano,效果很好!我知道这很简单,但我就是无法通过.. 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多