小心不是小白 2022-10-21 16:11 采纳率: 100%
浏览 167
已结题

从文件中读取多行字符串

无法从文件中读取字符串

#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;
}


运行不出结果

img

img

  • 写回答

3条回答 默认 最新

  • 伍六七0804 2022-10-21 16:21
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月29日
  • 已采纳回答 10月21日
  • 创建了问题 10月21日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备