小编bha*_*kar的帖子

为什么我的文件输出乱码?

当我读入一个文件然后输出到一个新文件时,输出是乱码,我试图找出原因.

我试图运行以下代码

#include<stdio.h>
#include<stdlib.h>
int main(int argc ,char *argv[])
{
    int c;
    FILE *of;
    FILE *f;
    of=fopen(argv[2],"w");
    f=fopen(argv[1],"r");
    while(c=getc(f)!=EOF)
        putc(c,of);
    fclose(of);
    fclose(f);
    return 0;

 }
Run Code Online (Sandbox Code Playgroud)

但是当我运行它如下 $./a.out temp new

这里temp是一个已经存在的文件,其内容是: this is a temp filenew运行程序之前不存在

但现在,当我把new它的内容搞砸了,为什么会这样呢?

c file-io

2
推荐指数
1
解决办法
268
查看次数

C语言中putc()的宏实现

我在C中寻找putc()函数的宏实现.

我在Ritchie和Kernighan的"C编程语言"中找到的一个实现

#define putc(x,p) (--(p)->cnt >=0 \
                  ?(unsigned char) *(p)->ptr++ :_flushbuf((x),p))
Run Code Online (Sandbox Code Playgroud)

文件结构定义如下

typedef struct _iobuf {
                int cnt;
                char *ptr;
                char *base;
                int flag;
                int fd;
             }FILE;
Run Code Online (Sandbox Code Playgroud)

当我们调用putc时,我无法看到cnt是如何初始化的?

c io

0
推荐指数
1
解决办法
998
查看次数

标签 统计

c ×2

file-io ×1

io ×1