char数组怎么转换成int? 从文件读出来的记录都是char数组型的。我想把数字记录转成int型怎么转?我试了一下atoi,但是好象不对。例如:char a[2] = {'1','2'};atoi(a) 后好象是120是我用的不对吗?怎么才对? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 FILE *p;p=fopen(......);然后调用int nOut=0;fscanf(p,"%d", &nOut);nOut得到就是一个int==============================下面的是mdsn里面的 一个例子#include <stdio.h>FILE *stream;void main( void ){ long l; float fp; char s[81]; char c; stream = fopen( "fscanf.out", "w+" ); if( stream == NULL ) printf( "The file fscanf.out was not opened\n" ); else { fprintf( stream, "%s %ld %f%c", "a-string", 65000, 3.14159, 'x' ); /* Set pointer to beginning of file: */ fseek( stream, 0L, SEEK_SET ); /* Read data back from file: */ fscanf( stream, "%s", s ); fscanf( stream, "%ld", &l ); fscanf( stream, "%f", &fp ); fscanf( stream, "%c", &c ); /* Output data read: */ printf( "%s\n", s ); printf( "%ld\n", l ); printf( "%f\n", fp ); printf( "%c\n", c ); fclose( stream ); }} 你这样已经造成了一个越界访问的错误了,只不过恰巧你a后面的两个字节是'0'和'\0'所以得到的是120如果你使用的是fread读取文件,一般来说就应该直接使用int*来访问你读取到的数据,譬如这样int ia[20];//假设你要读取20个int型数据fread(ia, 20, 4, fp);//这样就直接读取了,默认的到void*有一个转换,这个你可以不管如果使用的是fscanf读取文件,那么直接int ival;fscanf(fp, "%d", ival);//直接读一个十进制整数 怪我问得不好,干脆吧,怎么把char数组转成int? char a[3] = {'1','2','3'};int i = atoi(a);就是这样的,我试了是对的呀。i=123 atoi要求字符串啊,你的char a[2] = {'1','2'};可不是一个标准的字符串。char a[3] = { '1', '2'}正解 不知道你要哪种形式的转换,把4个char组合成一个int也叫转换,把char[]里面的内容转换成int也叫转换,表面看起来你要的是后一种…… 在我机器上把楼主的代码运行了一把发现是对的char a[2] = {'1','2'}; int cc = atoi(a);那个cc是12,晕 如何通过 com 接口 来创建 com (有窗口的控件), 并显示出来(显示在父窗口上)? 線程掛起問題,請牛人解答。。謝謝 MYIM 平台开发 大家帮忙分析一下,这段代码会不会出现异常 菜鸟求助,关于编译的一个问题 如何得到XML标签中的属性 move()怎么用啊 VC如何调用ACCESS中图形资源? 帮我看一下这个要怎样做? 救命啊老板要炒我了MFlexGrid? 菜鸟请教关于字符变量的问题! CListCtrl选中不同行时应该相应哪个消息?
p=fopen(......);
然后调用
int nOut=0;
fscanf(p,"%d", &nOut);
nOut得到就是一个int==============================
下面的是mdsn里面的 一个例子#include <stdio.h>FILE *stream;void main( void )
{
long l;
float fp;
char s[81];
char c; stream = fopen( "fscanf.out", "w+" );
if( stream == NULL )
printf( "The file fscanf.out was not opened\n" );
else
{
fprintf( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' ); /* Set pointer to beginning of file: */
fseek( stream, 0L, SEEK_SET ); /* Read data back from file: */
fscanf( stream, "%s", s );
fscanf( stream, "%ld", &l ); fscanf( stream, "%f", &fp );
fscanf( stream, "%c", &c ); /* Output data read: */
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c ); fclose( stream );
}
}
int ia[20];//假设你要读取20个int型数据
fread(ia, 20, 4, fp);//这样就直接读取了,默认的到void*有一个转换,这个你可以不管如果使用的是fscanf读取文件,那么直接
int ival;
fscanf(fp, "%d", ival);//直接读一个十进制整数
int i = atoi(a);就是这样的,我试了是对的呀。i=123
char a[2] = {'1','2'};
可不是一个标准的字符串。
char a[3] = { '1', '2'}
正解
发现是对的char a[2] = {'1','2'};
int cc = atoi(a);那个cc是12,晕