C语言将字符写入文件失败是什么原因

HuffmanTreeNode 2017-12-05 09:14:53
用fopen以“w”方式打开文件,如果文件不存在,本应该新建文件,然而在这个子程序中实际并没有新建,求问会是什么原因
(这里在做的是把以head为头的链表每一节点中存有0/1编码的数据域code依次每8位以字节封装输出)
根据对待输入字符的(拓展)ASCII码判断确定应该逻辑没有问题,就是没有能新建文件并写入
子函数代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "structure.h"

void writebit ( struct character * head)
{
FILE * fp;
char fincode;
unsigned char word;
int i;
int count;
int code;
struct character * curr;

fp = fopen("C:\\Users\\Administrator\\Desktop\\Encode.dat","w");
curr = head;
count = 0;
word = '\0';
fincode = '\0';

if(fp==NULL)
{
printf("打开文件失败\n");
exit(0);
}

for(curr=head;curr!=NULL;curr=curr->next)
{
for(i=0;curr->code[i]!='\0';i++)
{
fincode = curr->code[i];
count++;
code = fincode - '0';
word <<= 1;
word = word | code;

if(count==8)
{
//fwrite(&word,sizeof(char),1,fp);
fprintf(fp,"%c",word);
printf("%d\n",word);
count = 0;
word = '\0';
fincode = '\0';
}
}
}
if(count != 8)
{
word = word <<= (8-count);
//fwrite(&word,sizeof(char),1,fp);
fprintf(fp,"%c",word);
printf("%d\n",word);
}
fclose(fp);
}
...全文
616 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaopei8787 2017-12-05
  • 打赏
  • 举报
回复
积分少啊。可怜
大尾巴猫 2017-12-05
  • 打赏
  • 举报
回复
Administrator的用户目录,权限够吗
HuffmanTreeNode 2017-12-05
  • 打赏
  • 举报
回复
引用 1楼jiht594 的回复:
路径存在吗?
换个路径试试
确定路径正确……
自信男孩 2017-12-05
  • 打赏
  • 举报
回复
如果程序正常运行,不应该不创建文件并写文件; 文件如果没打开失败(程序里有提示若打开失败),建议到对应目录下寻找文件; 程序没发现问题;建议若文件打开成功加一条打印信息,文件打开成功;这样保证文件能够正常打开(创建)
jiht594 2017-12-05
  • 打赏
  • 举报
回复
路径存在吗?
换个路径试试
赵4老师 2017-12-05
  • 打赏
  • 举报
回复
fflush

70,005

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧