程序在从用户输入后不给出任何输出

时间:2015-08-05 16:09:20

标签: c file-handling dev-c++

我在C语言中创建一个非常基本的程序,它从用户那里获取一个单词作为输入,并搜索它在文本文件中显示的次数并提供输出。 代码是:

#include<stdio.h>
#include<string.h>
int main()
{
char user[20];
char word[20];
int i,pos=0,sum=0;
char c;
c='a';
printf("Enter the word you want to look for\n");
gets(user);
FILE *p;
p=fopen("D:\\trees.txt","r+");
do
{
    pos=0;
    fscanf(p,"%s",word);
    if(c!=EOF)
    {
        if(strlen(word)==strlen(user))
        {
            for(i=0;i<strlen(user);i++)
            {
                if(word[i]==user[i]||word[i]==user[i]+32||word[i]==user[i]-32)
                {
                }
                else
                {
                    pos=1;
                    break;
                }
            }
        }
        else
        {
            pos=1;
        }
        if(pos=0)
        {
            sum++;
        }
    }
}
while(c!=EOF)

;printf("\nNumber of times %s appears is %d",user,sum);

fclose(p);
}

现在程序输入正常,但不提供任何输出。 看起来像这样: this is the output window, which seems to be loading

我做错了什么?

1 个答案:

答案 0 :(得分:0)

查看评论,您的代码应该是:

#include<stdio.h>
#include<string.h>
#include <ctype.h>
int main()
{
    char user[20];
    char word[20];
    int n, pos=0, sum=0;
    unsigned int i, l;
    FILE *p;

    do {
        printf("Enter the word you want to look for\n");
    } while (gets(user)==0);
    user[strlen(user)-1]= '\0'; // remove trailing \n

    if ((p=fopen("D:\\trees.txt","r+"))==0) {printf("Error opening file\n"); exit(0);}
    do
    {
        pos=0;
        n= fscanf(p,"%s",word);
        if (n==1)
        {
            if(strlen(word)==(l=strlen(user)))
            {
                for(i=0; i<l; i++)
                {
                    if(!(word[i]==user[i]||word[i]==tolower(user[i])||word[i]==toupper(user[i])))
                    {
                        pos=1;
                        break;
                    }
                }
            }
            else pos=1;

            if(pos==0) sum++;
        }
    }
    while(n==1);

    printf("\nNumber of times %s appears is %d",user,sum);

    fclose(p);
    return(1);
}

(有一些优化和补充)