ascii-C语言文件读写和类型转换的一个小问题

问题描述

C语言文件读写和类型转换的一个小问题
#include <stdio.h>
#include <Windows.h>
main()
{
    FILE *f;
    int c;
    errno_t err = fopen_s(&f,"E:\workspace\TVPLAY\data\diffFrame\txts\file2.txt","r");
    if (err)
    {
        printf("can't open filen");
    }
    c = fgetc(f);
    while (c!=EOF)
    {
        printf("%d ",c);
        c = fgetc(f);
    }
    Sleep(30000);
    return 0;
}

定义的c是int型
但是如果如此输出是ascII的值
0空格1空格2空格2空格0空格
会输出
48 32 49 32 50 32 50 32

如果在函数前面定义int i
int i;
在下面执行强制转换
i=(int)c;
则在此行编译报错。

解决方案

嗯,C编译器不支持这种写法
i = (int)c;

C++才支持。

解决方案二:

你是想将字符串“1”转换成数值 1吧!

解决方案三:

贴出你的完整代码,如果c是int型i也是int,那么i = c;或者i = (int)c;都是可以的。
检查是不是有别的错。

解决方案四:

#include <stdio.h>
#include <Windows.h>

main()
{
    FILE *f;
    int c;
    int i;
    errno_t err = fopen_s(&f,"E:\workspace\TVPLAY\data\diffFrame\txts\file2.txt","r");
    if (err)
    {
        printf("can't open filen");
    }
    c = fgetc(f);
    i = int(c);
    while (c!=EOF)
    {
        printf("%d ",i);
        c = fgetc(f);
    }
    Sleep(30000);
    return 0;
}

error C2059: 语法错误:“类型”
一般是说i的声明要在函数开始时候,然而我的i是在函数开始时声明。

解决方案五:

fgetc()读取的是一行的字符串,返回的是指向这段字符串地址

时间: 2024-12-21 20:25:02

ascii-C语言文件读写和类型转换的一个小问题的相关文章

c语言-C语言 文件读写fscanf 不能读取文件第一行

问题描述 C语言 文件读写fscanf 不能读取文件第一行 我在做USACO的训练题 按照要求写了个读文件的程序,但是出了一点我不能理解的bug 希望老师指点指点 程序: int main () { char comet[6]; char group[6]; FILE *input; input=fopen ("ride.in", "r"); fscanf (input, "%sn%s", comet, group ); \fscanf (inp

c语言文件读写操作的问题

问题描述 c语言文件读写操作的问题 文件读写函数可以读写什么样类型的文件,有什么具体的实际的用途?它可以访问任意文件吗 解决方案 是的,可以访问任何文件,除非权限不足的文件无法访问.另外16bit环境下的C库函数(turbo c)不能访问2GB以上的大文件. 对于二进制文件,读取和解析是两个不同的概念.好比你只要视力没问题,你可以看任何语言写的书,但是显然外语的书你不一定看得懂. 你可以读取一个word文档文件,用C,得到一串字节,但是要想知道这个word文档中的文章.表格是什么,就复杂的多.

c语言文件读写的问题,为什么读出的字节会变长

问题描述 c语言文件读写的问题,为什么读出的字节会变长 对txt文件按字节读取 每次读8个字节 问什么会出现这种情况 ,怎么解决,每次要读个字节 解决方案 (http://img.ask.csdn.net/upload/201604/08/1460115662_349775.png) 解决方案二: void PlayDesByFile(char *source,char*dest) { int time=0,i=0; long filelength; FILE *s,*d; char sbuff

c语言问题-菜鸟求解(C语言文件读写)

问题描述 菜鸟求解(C语言文件读写) #include #include #include #include struct book { char name[20]; char phone[20]; char qq[20]; char wechat[20]; }; struct book members[50]; int a,j,k,l,a1,i=0; char js[10]="y"; char da[20]; char m1[10]; char m2[20]; char m3[20]

c 语言-c语言文件读写,新人入门

问题描述 c语言文件读写,新人入门 最近刚看 c 的文件读写,写文件没有问题,可是读文件的怎么都不行,想问问下面程序为什么第二次无法打开? 解决方案 我试了下在我电脑上可以跑的... 另外LZ的文件名没有加后缀... 解决方案二: fopen,fclose系列函数似乎不是线程安全的,fclose以后立刻fopen确实有点bug 建议LZfclose之后Sleep等待一下再执行fopen看看效果 解决方案三: 我试过sleep 3秒,不行 解决方案四: 最好不要有中文,路径换成全英文试试

c语言文件读写操作的详细使用方法

c语言文件读写操作的详细使用方法 C文件操作遇到的状况 1.将一个文件读到另一个文件,用"(ch = getc(fp)) != EOF"来判断文件是否结束,如果 文件是全英文文本的话绝对没问题,新文件的大小和原文件大小一样:但是如果是一些有中 文字符或者是二进制文件,原文件没读完就结束. 2.将一个文件读到另一个文件,用"!feof(fp)"判断文件是否结束,不管原文件是什么类型 的都可以将原文件全部读完才结束,但是新文件的大小比原文件多了一个字节. 问题:在C里如

java-Java里的关于类型转换的一个小问题

问题描述 Java里的关于类型转换的一个小问题 1 public void mouseDra=gged(MouseEvent e) 2 { 3 String str = "X = " + e.getX() + " Y = " + e.getY(); 4 this.textFiled.setText(str); } 我的问题在第三行,e.getX()返回的是一个int类型的数,但是括号中是String类型,并且str也声明为字符串.那没请问:为什么编译时不报错呢? 解

文件类型,c语言文件读写,文件缓冲,文件打开方式,文件操作函数

文件类型分为:流文件和设备文件,设备文件比如:VGA接口,串口,usb口,网口,串口,这些接口都被操作系统抽象成为了文件. 当我们写程序的时候默认已经帮我们打开了三个文件 分别是: stdin:标准输入,stdout:标准输出,stderr:标准出错,scanf实际上接收的是标准输入的数据,这时候的标准输入就是我们的键盘.              有四种方式清空缓冲区:      A.加'\n';            B.程序正常退出;      C.通过fflush(stdout)也可以清

C语言中的各种文件读写方法小结_C 语言

前言    找工作的时候,曾经用C语言练习过一段时间的算法题目,也在几个还算出名的OJ平台有过还算靠谱的排名.之前以为C语言只限于练习一下算法,但是工作中的一个问题解决让我意识到C语言的用处还是非常广泛的.下面介绍一下,如果用C语言来操作文件保存一个字符串,和读取一个字符串.算法中往往都是printf来打印出结果,但是真实工作中往往通过文件来进行一些持久化的存储工作. C-File I/O    文件的I/O操作是每一门语言的重点,因此这里我先来介绍一下如何用C语言去进行文件的I/O操作. 文件