C语言 如何在数组中找到相同的单词?

wgx48brx  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个程序,需要计算数组finalArr[]中的第一个单词的数量。为此,我将第一个单词单独写入数组distArr[]。然后将**finalArr[]数组的元素与distArr[]数组的元素进行比较。但最终结果不正确。例如,我在finalArr[]**中有字符串“qwe qwe qwe”,正确的结果必须是“3”。

#include <stdio.h>
#include <string.h>

void main(void)
{
    char finalArr[100];
    char src;
    int i = 0;

    printf("Enter a string: ");
    // fill the array
    while ((src = getchar()) != '\n' && i < 99)
    {
        finalArr[i] = src;
        i++;
    }
    finalArr[i] = '\0';
    printf("Result is: %s\n", finalArr); // output array

    // writing first word to distArr[]
    char distArr[100];
    int j = 0;
    for (j = 0; j < strlen(finalArr); j++)
    {
        distArr[j] = finalArr[j];
        if (finalArr[j] == ' ')
        {
            break;
        }
    }
    distArr[j] = '\0';
    printf("Dist array: %s\n", distArr);
    printf("%c", distArr[0]);

    // Compare the first word with all elements of the array finalArr[]
    int count = 0;
    int d;
    for (int k = 0; k < strlen(finalArr); k++) {
        if (finalArr[k] == ' ') {
            k++;
        }
        for(int d = k; d < strlen(distArr); d++) {
        if (distArr[d] == finalArr[d]) {
            count++;
            }
        }
    }
    printf("Count: %d", count);
}

最好使用不带strtok的一维数组

hrysbysz

hrysbysz1#

这样的东西可能会起作用:

#include <stdio.h>
#include <string.h>

int main() {
    const char delim [] = " ";
    char finalArr [] = "qwe qwe qwe";
    char distArr [] = "qwe";
    int count = 0;
    
    char *ptr = strtok(finalArr, delim);

    while(ptr != NULL)
    {
        if (!strcmp(ptr,distArr))
            count++; //strings match
        ptr = strtok(NULL, delim);
    }
    
    printf("Result:%d",count);

    return 0;
}

该输出:Result:3

相关问题