QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 842|回复: 7

求教一个C语言的小问题~

[复制链接]
发表于 2003-7-10 20:07:57 | 显示全部楼层 |阅读模式
被一个小问题把脑袋搞晕了,请大家先帮忙看下面这一段小程序
  
#include <stdio.h>
main()
{
  char *ch;
  int in;
  ch="8877";
  in=(int)ch;
  printf("%s\n",ch);
  printf("%d\n",in);
}
   输出是
    8877
    134513692
   我想让ch和in输出同样的值,可是强制类型转换以后只是把8877的Ascii码转换过来了.那我该怎样才能把整数的8877从ch赋给in呢?
发表于 2003-7-10 21:18:58 | 显示全部楼层
use atoi

see man atoi
回复

使用道具 举报

发表于 2003-7-10 21:35:56 | 显示全部楼层

  你这里明显的不对,
char *ch;
ch="8877";
这里你把他当成数组了,还怎么能转换呢?

in=(int)ch;
回复

使用道具 举报

发表于 2003-7-10 21:42:48 | 显示全部楼层
no, ch="8877" is doable.

"8877" is staticly allocated mem.

ch is a pointer, point to it.

回复

使用道具 举报

发表于 2003-7-10 22:59:51 | 显示全部楼层
同意楼上,而且,这段代码确实还能够执行

不好意思,我现在在windows

[code:1]
E:\test>cl main.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

main.c
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:main.exe
main.obj

E:\test>main
8877
4218928
[/code:1]
回复

使用道具 举报

发表于 2003-7-10 23:37:09 | 显示全部楼层
in= atoi(ch);
回复

使用道具 举报

发表于 2003-7-13 16:45:10 | 显示全部楼层
是的,你的分析没错:
no, ch="8877" is doable.

"8877" is staticly allocated mem.

ch is a pointer, point to it.
   

BUT:你是从语法上说的,也就是说这段程序在语法上没错,所以他能运行
     但是,它上个逻辑错误,
char *ch;
ch="8877";
in=(int)ch;
用字符输入8877,
通过in=(int)ch;还想输出8877,可能吗?
回复

使用道具 举报

发表于 2003-7-13 16:56:07 | 显示全部楼层
int atoi(char *)

把一个字符串转换成一个整数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 10:58 , Processed in 0.062932 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表