int变量值自己变了

题目是,case.1文件里有一堆由数字、标点、字母、-连接符(连接单词)组成的文章里,将一个个单词读出写到words.txt里。

 

#include "stdio.h"
#include "math.h"
#include "string.h"
#include "stdlib.h"

void WritetoFile()
{
    FILE *fp=fopen("case1.txt","r"),*fp1=fopen("words.txt","w");
    char ch,a[100];
    a[0]='\0';
    int i=0,k=0;     //k用于单词是否开始读取
    while((ch=fgetc(fp))!=EOF)
    {
        if(ch=='-')
            continue;
        if(k==0)
        {
            if(a[0]!='\0')
                fprintf(fp1,"%s\n",a);
            i=0;
            a[i]='\0';
        }
        if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
        {
            k=1;
            if(ch>='a'&&ch<='z')
                a[i++]=ch;
            if(ch>='A'&&ch<='Z')
                a[i++]=ch+32;
            a[i]='\0';
        }
        else
            k=0;
    }
    fprintf(fp1,"%s\n",a);
    fclose(fp);
    fclose(fp1);
}


int main()
{
    WritetoFile();
}

k=1开始读单词,k=0表示单词读入完成了,输出完整的单词。

当遇到-时,就continue读下一个字符,k值应该是1不变啊,可是为什么k变成0了?

文件最后有回车或者一些不可见字符,导致运行了else k=0;。如有帮助,请采纳一下,谢谢。