问下c语言字符转换数字的这个转换是怎么转换的啊?

c语言文件格式转换问题 - 开源中国社区
当前访客身份:游客 [
当前位置:
请前辈们帮忙看下这个问题:有2个文件
文件1:test1.txt
{n:test,p:test,t:t2,g:1,m:default}
{n:test1,p:112,t:t3,g:1,m:hehe&&abc}
文件2:test2.txt&
user=ceshi1 cn=zzz modules=t2 pd=269
user=ceshi2 cn=bbb modules=t2 pd=8 ae=201 ee=201 desc=-
user=hehe cn=ttt
modules=t2 pd=60713 ae=208 ee=208 desc=-
现在想要把文件2 test2.txt 的每一行数据转换成文件1 test1.txt 用大括号括起来的形式。比如这里文件2转换为文件1为:&
{n:ceshi1,p:269,t:t2,g:1,m:default}
{n:ceshi2,p:8,t:t2,g:1,m:-&&bbb}
{n:hehe,p:60713,t:t2,g:1,m:-&&ttt}
我的思路是做两个结构体t1、t2,把文件2的一行存为一个 t2,然后遍历 t2 取对应的值放入 t1 作为文件1的一行,最后写入到文件1中。 &晚辈写C不久,知识点不熟,在遍历 t2 的时候卡住了。&
请前辈们指点,希望能帮忙写出代码,晚辈想通过各位的代码进行学习。谢谢各位了。
文件1在文件2中的对应关系:
n对应user, p对应pd, t对应modules, g没有对应,值都为1,m对应desc和cn两个字段,格式为“desc&&cn”
共有1个答案
<span class="a_vote_num" id="a_vote_num_
例子没举好,没看明白~ &不过,就是读写文件、字符串处理,属于课堂作业那种。不考虑性能的话,简直就是随便写
--- 共有 1 条评论 ---
比如文件2的第一行:
user=ceshi1 cn=zzz modules=t2 pd=269
user的值对应n,第一行user等于ceshi1,转换成文件1就是n:ceshi1
不知道这样说清楚了没。。
c的基础知识是自己看的,不太熟悉。还望给写写,不考虑性能。。
(2年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
嘿嘿嘿嘿嘿的其它问题
类似的话题问下c语言的这个转换是怎么转换的啊?_百度知道c语言字符与ASCII码如何转换?
c语言字符与ASCII码如何转换?
09-02-17 &
ASCII字符值范围是0X00到0X7F。因为有不可见和键盘不好拍的字符。所以你可用整型数输入。UNSIGNED CHAR A[100],B[100]; &#160;UNSIGNED CHAR X,Y,Z;SCANF(&%D&,&A[I]);IF (A[I] & 0X7F || A[I] & 0) 重输;加减运算 就用算数表达式。例如Y = A[1]+A[2];B[2] = A[1] + A[2] - A[3];UNSIGNED CHAR 就是8BIT无符号整数。加减运算后很可能超界,即大于0X7F或小于0。加减运算后的字符很可能是不可打印字符,或“看不见”的字符。所以你的题目有问题。
请登录后再发表评论!您的举报已经提交成功,我们将尽快处理,谢谢!
%d输出整数
%c输出字符
%x.ye 输出科学数字,x,y分别代表有效数字和10的幂
%f 输出浮点数
%o 输出8进制数
%x 输出16进制数,小...
大家还关注
y?++x:++y;z的值为(
3.为判断char型变量m是否是数字,可以使用表达式(
(A)0<=m&m<=9
(B)’0’<=m&&m<=’9’
(C) “D”<=m&&m<=9
(D)A、B、C答案都是错误的。
4.从下列选项中选择不会引起二义性的宏定义是(
(A) #define power(x)
(B) #define power(x)
(C) #define power(x)
(D) #define power(x)
5.C语言规定,调用一个函数时,实参和形参变量之间的数据传递是(
(A) 地址传递
(B)值传递
(C)由实参传给形参,并由形参传回来给实参。
(D)由用户指定传递方式
6、执行语句“for(i=0;i++<3;);”后,变量i的值为(
7、在while(x)中的(x)与下面条件等价的是(
(A) x==0
8、若int x;且有下面的程序片段,则输出结果为(
for(x=3;x求C语言题解答 1. 数学不等式 和b2...
y?++x:++y;z的值为(
3.为判断char型变量m是否是数字,可以使用表达式(
(A)0<=m&m<=9
(B)’0’<=m&&m<=’9’
(C) “D”<=m&&m<=9
(D)A、B、C答案都是错误的。
4.从下列选项中选择不会引起二义性的宏定义是(
(A) #define power(x)
(B) #define power(x)
(C) #define power(x)
(D) #define power(x)
5.C语言规定,调用一个函数时,实参和形参变量之间的数据传递是(
(A) 地址传递
(B)值传递
(C)由实参传给形参,并由形参传回来给实参。
(D)由用户指定传递方式
6、执行语句“for(i=0;i++<3;);”后,变量i的值为(
7、在while(x)中的(x)与下面条件等价的是(
(A) x==0
8、若int x;且有下面的程序片段,则输出结果为(
for(x=3;x求C语言答案 1. 数学不等式 和b2-...C语言中的数据类型转换问题-linux-电脑编程网C语言中的数据类型转换问题作者: Alan0521 和相关&&
● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待,取值范围总是0~255)。● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。double ←── float 高↑long↑unsigned↑int ←── char,short 低● 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型,然后两者再进行运算,结果为long型。所有这些转换都是由系统自动进行的,使用时你只需从中了解结果的类型即可。这些转换可以说是自动的,但然,C语言也提供了以显式的形式强制转换类型的机制。● 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容,而较高类型的数据转换为较低类型时则可能有些数据丢失。
赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换,转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:(1) 浮点型与整型● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。(2) 单、双精度浮点型● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。doub1e型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。(3) char型与int型● int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。● chr型数值赋给int型变量时,一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值,只是数据的内部表示形式有所不同。(4) int型与1ong型● long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。(这里假定int型占两个字节)。将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。(5) 无符号整数● 将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不变,但外部值却可能改变。● 将一个非unsigned整型数据赋给长度相同的unsigned型变量时, 内部存储形式不变,但外部表示时总是无符号的。main(){ unsigned a,b;&&int i,j;&&a="65535";&&i="-1";&&j="a";&&b="i";&&printf("(unsigned)%u→(int)%d\n",a,j);&&printf("(int)%d→(unsigned)%u\n",i,b);}运行结果为:(unsigned)65535→(int)-1(int)-1→(unsigned)65535
● 计算机中数据用补码表示,int型量最高位是符号位,为1时表示负值,为0时表示正值。如果一个无符号数的值小于32768则最高位为0,赋给 int型变量后、得到正值。如果无符号数大于等于32768,则最高位为1,赋给整型变量后就得到一个负整数值。反之,当一个负整数赋给unsigned 型变量时,得到的无符号值是一个大于32768的值。● C语言这种赋值时的类型转换形式可能会使人感到不精密和不严格,因为不管表达式的值怎样,系统都自动将其转为赋值运算符左部变量的类型。● 而转变后数据可能有所不同,在不加注意时就可能带来错误。这确实是个缺点,也遭到许多人们批评。但不应忘记的是:c面言最初是为了替代汇编语言而设计的,所以类型变换比较随意。当然,用强制类型转换是一个好习惯,这样,至少从程序上可以看出想干什么。
来源:/sealove518/116361/message.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
强制类型转换&&强制类型转换&&当操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。&&1、显式强制类型转换&&显式强制类型转换需要使用强制类型转换运算符,格式如下:&&type(&expression&)&&或&&(type)&expression&&&其中,type为类型描述符,如int,float等。&expression&为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:&&int nVar=0xab65;&&char cChar=char (nVar);&&上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。&&2、隐式强制类型转换&&隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:&&int nVar;&&double dVar=3.88;&&nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.881,若已知x,y为double类型,则表达式:x=1,y=x+3/2结果是多少啊?因为x,y都是double型,所以执行了y=x+3/2这个语句后,会输出小数部分,double型默认的是小数点后几位我忘了,你自己调试下,就会明白了!
来源:/question/.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
简单的例子:
#include&stdio.h&#include&conio.h&int main(){&&clrscr();&&double dNum=28.;&&long&&&lNum=12;
&&printf("\nlong(dNum*10000)\n");&&printf("\ndNum2long:%f-&%ld\n\n\n",dNum,long(dNum*10000));
&&printf("\ndouble(long(dNum*1)\n");&&printf("\ndlong2double:%ld-&%f\n\n\n",long(dNum*10000),double(long(dNum*1));
&&printf("\ndouble(long(dNum*1.0)\n");&&printf("\ndlong2double:%ld-&%f\n\n\n",long(dNum*10000),double(long(dNum*1.0));
&&printf("\n(double(long(dNum*10000))/10000)\n");&&printf("\ndlong2double:%ld-&%f\n",long(dNum*10000),(double(long(dNum*10000))/10000));
&&getch();&&return 0;}
将上面的程序在BC3.1中编译查看结果。
另外还可以参看论文:
C语言数据类型转换的方式及常见问题探讨.PDF 葛菁(&http://ishare..cn/f/9084159.html&)
论C语言教学中数据类型转换的问题.PDF&&&&&侯传宇(&http://ishare..cn/f/9084160.html&)&
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&&&&&&&&&&&&&&&&&&&&&&&&各类数值型数据间的混合运算&&&谭浩强C语言&&&&&整型(包括int, short, long)和实型(包括float, double)数据可以混合运算,字符型数据可以与整型通用。因此,整型、实型、字符型数据间可以混合运算。例如:10+'a'+1.5-*'b'是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则如图所示:double ←── float 高↑long↑unsigned↑int ←── char,short 低&&&&图中横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,short型转换为int型,float型数据在运算时,一律先转换成双精度型,以提高运算精度(即使是两个float型数据相加,也先都化成double型,然后再相加)。&&&&纵向的箭头表示当运算对象为不同类型时转换的方向。例如int型与double型数据进行运算,先将int型的数据转换成double型,然后在两个同类型(double型)数据间进行运算,结果为double型。注意箭头方向只表示数据类型级别的高低,由低向高转换。不要理解为int型先转换成unsigned int型数据,再转换成long型,再转换成double型。如果一个int型数据与一个double型数据运算,是直接将int 型转换成double型。同理,一个int型与一个long型数据运算,先将int型转换成long型。&&&&换言之,如果有一个数据是float型或double型,则另一数据要先转换成double型,运算结果为double型。如果参加运算的两个数据中高级别为long型,则另一数据先转换成long型,运算结果为long型。其他依次类推。假设已指定i为整型变量,f为float变量,d为double型变量,e为long型,有下面式子:
&&&&10+'a'+i*f-d/e&&&&运算次序为:①进行10+'a'的运算,先将'a'转换成整数97,运算结果为107。②进行i*f的运算。先将i与f都转换成double型,运算结果e为double型。③整数107与i*f的积相加。先将整数107转换成双精度数(小数点后加若干个0,即107.0000....00),结果为double型。④将变量e化成double型,d/e结果为double型。⑤将10+'a'+i*f的结果与d/e的商相减,结果为double型。
====
.cn/s/blog_49djy1q.html相关资料:|||||||C语言中的数据类型转换问题来源网络,如有侵权请告知,即处理!编程Tags:                &                    

我要回帖

更多关于 c语言字符转换数字 的文章

 

随机推荐