从文件中读取多行字符串

无法从文件中读取字符串

#include 
#include
#include
int f(int i, int k)//以第i个字符打头的长度不超过k的升序字符串个数为f(i,k)
{
    int count = 0,j;
    if (k == 1)
        return 1;
    else
        for (j = i+1; j <= 26; j++)
            count += f(j, k - 1);
    return count;
}

int g(int k)//长度不超过k的升序字符串总个数为g(k)
{
    int i,sum=0;
    for (i = 1; i <= 26; i++)
        sum += f(i, k);
    return sum;
}

int main()
{
    FILE* fp1,*fp2;int k,m=0,i,j,t,num,x,n; char c,s1[8];//k为字符串个数,m为字符串长度
    fopen_s(&fp1,"input.txt","r");
    fopen_s(&fp2,"output.txt","w+");
    if (fp1 == NULL)
    {
        printf("Fail to open file!");
        exit(0);
    }
    
    fscanf_s(fp1,"%d", &k);
    printf("%d\n", k);
    c = fgetc(fp1);

    while(k--)
    {
        fscanf_s(fp1, "%s", &s1);
        printf("%s\n", s1);
        c = fgetc(fp1);
        num = 0;
        m = strlen(s1);//字符串长度
        for (i = 1; i < m; i++)//先把所有长度小于所求字符串长度的字符的个数求出来
            num += g(i);
        for (i = 0, t = 0; i < m; i++)
        {
            x = s1[i] - 'a' + 1;//下一位字符的顺序数
            n = m - i;//获取当前长度
            for (j = t + 1; j < x; j++)
                num += f(j, n);
            t = x;
        }
        fprintf(fp2, "%d\n", num+1);
    }
    fclose(fp1);
    fclose(fp2);
    return 0;
}


运行不出结果

img

img

读取一行直接用fgets函数就行啊

你为什么要乱打断点,把断点去掉继续跑啊