c语言提取字符串**为什么不能直接等于字符串名字取地址

C语言中怎么将变量名转换为字符串_百度知道
C语言中怎么将变量名转换为字符串
比如我要做一个宏定义#define name_to_str(name)这个宏定义最终返回的是我要的字符串
用这个样子的定义可以解决你的问题:#define name_to_str(name_)& (#name_)示例:#include&stdio.h&#define&name_to_str(name_)&&(#name_)int&main(){&&int&a,b,c,&&char&*&p1;&&a=3;&&b=4;&&c=5;&&abc=a*b*c;&&p1=name_to_str(abc);&&printf(&a=&%d&&b=&%d&&c=&%d\n&,a,b,c);&&printf(&%s=&%d&&%s=&%d&&%s=&%d\n&,name_to_str(a),a,name_to_str(b),a,name_to_str(c),c);&&printf(&%s=%d\n&,p1,abc);&&return&0;}输出结果:a= 3& b= 4& c= 5a= 3& b= 3& c= 5abc=60
其他类似问题
10人觉得有用
为您推荐:
其他5条回答
#include&stdio.h&#include&string.h&#define&name_to_str(name)&printf(&%s\n&,#name)int&main(){&&&&int&nameT name_to_str(nameTest); return&0;}这个就可以哈,欢迎交流。
好像可以,我试试
#include&&stdio.h&#define&fun(xxx)&printf(&&%s&=&%d\n&,&#xxx,&xxx&)#define&name_to_str(xxx)&#xxxint&main(){&&&&int&m&=&5;&&&&fun(m);&&&&printf(&%s\n&,name_to_str(m));&&&&return&0;}/*关键是注意&#&这个符号。*/
宏只起替换作用。不知道你要获得字符串干什么,你可以看一下sscanf函数跟sprintf函数,百度上搜一下。
#define&GET_NAME(var)&#var就这样。
没看懂什么意思
字符串的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1817人阅读
简单的从txt文档中获取用户名和密码并验证
#include&stdio.h&
#include&string.h&
int recog_pwd(char name[20],char pwd[20]);
void main()
char *name = &osd&;
char *pwd = &123&;
if((recog_pwd(name,pwd))==1)
printf(&user and pwd right\n&);
}else printf(&user not exist or password is wrong\n&);
int recog_pwd(char name[20],char pwd[20])
FILE *fp1;
char str[20];
*以只读方式打开文件
*read.txt格式为 :用户名 密码 (中间有一空格)无限循环
if ((fp1=fopen(&read.txt&,&r&))==NULL)
printf(&cannot open file\n&);
*判断账户是否存在
while(!feof(fp1))
fscanf(fp1,&%s&,str);
if(strcmp(str,name)==0)
printf(&the name :%s is ok\n&,name);
fscanf(fp1,&%s&,str);
if(strcmp(str,pwd)==0)
printf(&the pwd :%s is ok\n&,pwd);
printf(&the pwd :%s is wrong\n&,pwd);
fclose(fp1);
fscanf(fp1,&%s&,str);
fclose(fp1);
附录:read.txt文本格式
deeerf 789we
gggggg 00012
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:250393次
积分:4264
积分:4264
排名:第3411名
原创:172篇
转载:55篇
评论:77条
(10)(3)(2)(2)(1)(2)(5)(4)(14)(2)(5)(8)(1)(5)(14)(2)(4)(16)(4)(9)(8)(11)(14)(6)(5)(16)(16)(2)(5)(21)(5)(6)在C语言SOCKET编程中,往往需要通过 主机名/域名 来求得IP地址。比例说,我们想连接上百度服务器,但是不可能人工先去查它的IP,然后在写进代码里。万一IP变了呢,那代码不是要重写?所以,这一章,主要介绍如何通过主机名/域名来求服务器IP地址。
首先认识一个表示主机信息的结构体:
struct hostent{
char* h_ //主机的正式名称
char** h_aliases: //主机的备用名称表
int h_ //地址类型, 比如"AF_INET"
int h_ //地址长度,大家目前使用的都是32位
char** h_addr_ //主机地址表
#define h_addr h_addr_list[0]; //主机地址表中的首个地址
h_addrtype 这是表示主机所使用的地址类型的定义,在C语言winsock2.h头文件中以“AF_”开头的宏定义就是它的值。如果使用的是IPV4,则值为”AF_INET”,如果是IPV6,值为“AF_INET4”。
h_length 地址的长度,一般都用IPV4中,所以都是32位/4字节。
h_addr_list 在一个主机名中,往往有很多对应的IP地址。当我们通过使用主机名查IP时,就会把返回的所有IP地址保存在主机地址表中。我们一般使用h_addr来取得第一个地址就行了。
在C语言的SOCKET网络编程中,我们使用gethostbyname()函数来获取主机信息,它的函数原型如下:
struct hostent* gethostbyname(const char* hostname );
hostname是个包含主机名/域名的字符串,函数通过给定的主机名,返回一个包含主机名称和主机地址信息的指针结构体。
如果我们想要返回百度服务器的主机信息,则:
char baidu_hostname[]=""
struct hostent* baidu_
baidu_hostent = gethostbyname( baidu_hostname );
取得IP地址后,使用下面方法把IP地址打印到标准输出上:
struct in_addr baidu_
baidu_addr.s_addr = *(unsigned long * ) baidu_hostent->h_
printf("baidu_IPV4 : %s " , inet_ntoa( baidu_addr ) );
in_addr 是一个用来表示32位IPV4网络地址的结构体,s_addr是个使用unsigned long数据格式来表示一个IPV4 地址的结构成员。
inet_ntoa() 将指定的网络地址转换成 以点隔字符串表示的IPV4地址,例如“192.168.1.101”就是个点隔字符串网络地址。
//函数原型
char* inet_ntoa( struct in_addr);
通过以上方法,以后就可以直接使用主机名/域名来获取IPV4地址,而再不用人工去查找。
下面是关于本期讲解内容的总结的源代码:
//通过改变以下宏定义来修改要解析的主机名
#define HOSTNAME
int main( int argc , char* argv[])
struct hostent *
struct in_
//启动socket服务
WSADATA wsaD
ret = WSAStartup( 0x101 , &wsaData);
//如果启动成功 ,返回值为0
if( ret != 0 )
printf("WSAStartup error:%d "
, WSAGetLastError() );
//获取主机信息
host = gethostbyname( HOSTNAME );
if( host == NULL )
printf("gethostbyname error:%d" , WSAGetLastError() );
addr.s_addr = *(unsigned long * )host->h_
printf("主机名
:%sn" , host->h_name);
printf("主机地址: %sn " , inet_ntoa( addr ) );
WSACleanup();
此条目发表在分类目录,贴了, , , 标签。将加入收藏夹。
- 16,603 浏览数
- 13,544 浏览数
- 12,825 浏览数
- 11,564 浏览数
- 11,164 浏览数
- 11,080 浏览数
- 10,532 浏览数
- 10,103 浏览数
- 9,825 浏览数
- 9,190 浏览数第10章:c语言字符串_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
第10章:c语言字符串
大小:315.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 c语言获取字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信