ANSI C strcmp()函数永远不会返回0,我哪里错了?

时间:2016-11-13 22:48:46

标签: c arrays string strcmp

C不是我所熟悉的语言,所以我离开了我的舒适区(学习C),我遇到了一个我目前无法解决的问题。

我试图从文本文件中一次读取一个单词,并将它与我作为指针传递给函数的单词进行比较。 我目前正在从文件中一次读取一个字符并将这些字符存储在一个新的char数组中,直到它到达一个空格,然后将该char数组与存储在指针中的原始单词进行比较(存储在它指向的位置)无论如何)。

当我执行printf检查两个数组是否相同时,它们都等于" Hello"。起初我想也许是因为我的char数组没有终结器,但我尝试添加一个,但仍然没有什么似乎工作。

我的代码如下,我将不胜感激任何帮助。 C再也不是我强大的领域。

如果我这样做"你好"它将是> 0顺便说一句,所以我认为这是因为gets()stdin函数还包括enter键或类似的东西。我不知道更好的方法来抓住字符串。

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

int partA(char*);

main()
{
    // Array to store my string
    char myWord[81];
    // myword = pointer to my char array to store. 80 = the size (maximum). stdin = standard input from my keyboard. 
    fgets(myWord, 80, stdin); 
    partA(myWord);

}

int partA(char *word)
{
    // points to file.  
    FILE *readFile;
    fopen_s(&readFile, "readThisFile.txt", "r");

    char character;
    char newWord[50];
    int i = 0;

    while ((character = fgetc(readFile)) != EOF)
    {
        if (character == ' ')
        {
            newWord[i] = '\0';
            int sameWord = strcmp(word, newWord);
            printf("Word: %s", word);
            printf("newWord: %s", newWord);
            if (sameWord == 0)
                printf(" These words are the same.");
            if (sameWord > 0)
                printf(" sameWord > 0.");
            if (sameWord < 0)
                printf(" sameWord < 0.");
            printf("\n");
            i = 0;
        }
        if (character != ' ')
        {
            newWord[i] = character;
            i++;
        }
        printf("%c", character);


    }

    fclose(readFile);

    return 1; 
}

0 个答案:

没有答案