c语言 文件读取 字符 到一个字符数组

假设字符数组为 p[i],读取文件里面的字符直到结束为止。这个代码应该是怎么的。求大神啊,不会啊,~~~~(>_<)~~~~

可以通过fgetc函数,将字符读取出来,并赋值到数组的对应位置上。

fgetc声明在stdio.h中,其原型为

int fgetc(FILE *fp);

功能为从打开的文件fp中读取一个字符,并返回。

当读取成功时,返回读取到的字符的ascii码值,否则返回EOF。


以下是逐个读取字符,存于字符数组,直到读完整个文件的例子。

#include <stdio.h>
int main()
{
    char buf[10240];//定义一个足够大的字符数组存文件数据。
    int c;//临时变量。
    int cnt = 0; //标记目前读到几个字节。
    FILE *fp;//文件指针。
    
    fp = fopen("in.txt", "r"); //打开文件。
    while(1)
    {
        c = fgetc(fp); //读一个字节。
        if(c == EOF) break; //到文件尾,退出循环。
        buf[cnt] = c;//赋值到字符数组中。
        cnt ++;//读到的字符增加一个。
    }
    fclose(fp);//关闭文件。
    
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-17

1、首先打开Dev-C++软件,单击文件---->另存为,保存。

2、在保存文件对话框中,将保存类型选择为C,文件名为输出宽字符。

3、首先,定义的,如下图所示。

4、接着,定义名。定义一个宽字符类型的变量wstr,类型用wchar_t表示。

5、提示输入宽字符型变量,在键盘输入任意的宽字符。最后,输出宽字符变量,用wprintf命令实现输出。

6、运行程序,在屏幕输入任意的宽字符,按下就会输出对应的宽字符。

本回答被网友采纳
第2个回答  2015-09-19

一、对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:
  1.字符读写函数  :fgetc和fputc
  2.字符串读写函数:fgets和fputs
  3.数据块读写函数:freed和fwrite
  4.格式化读写函数:fscanf和fprinf

使用fscanf("%c",&c)即可读取文本当中的字符。

二、例程:

#include<stdio.h>
#define F_PATH "d:\\myfile\\file.dat"
char s[1000];//字符数组
int i=0;
int main(){
    FILE*fp=NULL;//需要注意
    fp=fopen(F_PATH,"r");
    if(NULL==fp) return -1;//要返回错误代码
    while(fscanf(fp,"%c",s+i)!=EOF) printf("%c",s[i++]); //从文本中读入到字符数组当中并在控制台打印出来
    fclose(fp);
    fp=NULL;//需要指向空,否则会指向原打开文件地址    
    return 0;
}

第3个回答  推荐于2017-10-12
#include <stdio.h>
int main()
{
char p[10240] ; //数组空间要足够大,超过文件中的字符数才可以
FILE *fp ;
fp=fopen("text.txt" , "r");//文件名自己改一下
if ( fp )
{
int i=0;
int ch=0;
while( !feof(fp) )
{
ch=fgetc(fp);
if ( ch==EOF )
break ;
p[i]=ch ;
i++;
}
p[i]=0;//串结束符。
fclose(fp);
}
return 0;
}追问

ch不是字符型的吗?

追答

有什么问题?

追问

你定义的那个是整型的 我想知道是弄错了还是本来就是这样的

追答

哦没错的,你自己运行试试
fgetc()函数的返回值是int的,当到文件尾时,返回EOF((int)-1)。

追问

好像是没有区别的

本回答被提问者采纳
第4个回答  2012-11-04
废话不多说,直接上码:
#include <stdio.h>
#include <stdlib.h>
int main(){
int c;
FILE *in, *out;
in=fopen("in.txt","r");
out=fopen("out.txt","w");
while((c=fgetc(in)) != EOF)
fputc(c,out);
fclose(in);
fclose(out);
exit(0)
}
// 以上程序的目的是从 in.txt 中读取每个字符写入 out.txt 文件中
// 要想将读取的字符传入数组中那么需要定义一个足够大的数组空间比如P[100]
// 然后while((c=fgetc(in)) != EOF) P[i++]=c;追问

十分感谢

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网