guitarliu123 2016-10-22 08:33 采纳率: 0%
浏览 1161

求教:c++ fgets函数只能读取一次,请问各路大神怎么解决呀

#include
#include
#include
#include
#include
#include
#include
using std::endl;
using std::cin;
using std::cout;
using std::string;
using namespace std;
int main()
{
FILE *fp,*fp1;
int i,j;
char str[100];
char str1[100];
char strchar[3];
char strchar1[3];
if ((fp = fopen("input.txt", "r")) == NULL)
{
printf("fopen() error %d: %s\n", errno, strerror(errno));
exit(-1);
}
if ((fp1 = fopen("database.txt", "r")) == NULL)
{
printf("fopen() error %d: %s\n", errno, strerror(errno));
exit(-1);
}
fgets(str, sizeof(str), fp);
str[strlen(str)] = '\0';
// printf("%s ", str);
for(i=0;i<=strlen(str);i=i+2)

{

        strncpy(strchar, str+i, 2);
        strchar[2] = '\0';
        cout<<strchar<<endl;
        while(fgets(str1, sizeof(str1), fp1)) //此处只能读取一遍成语数据,怎么办?
        {
            cout<<str1;
            for(j=0;j<=strlen(str1);j=j+2)
            {
                strncpy(strchar1, str1+j, 2);
                if((strchar[0]==strchar1[0])&&(strchar[1]==strchar1[1]))
                {
                    cout<<str1;
                    break;
                }
            }
        }
    }
return 0;

}
第一遍for循环可以进入while循环,但是第二遍,while处的fgets不会读取了,怎么办呀?
(此程序是实现:挨个提取input里边的中文,利用每个中文字符去database里查找含有这个字符的成语,并且将它输出来)

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2016-10-22 08:30
    关注

    中文编码是否正确

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮