无法从文件中读取字符串
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
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;
}
运行不出结果