根据编译环境,有如下方式:
1
部分编译器中,支持__FUNCTION__或__func__宏。该宏为编译器定义,值为被调用函数的函数名转换成的字符串。如在func()中调用__FUNCTION__,则该宏的值为"func"。
2
如果编译器不支持上述宏名,那么需要手动添加宏。可以有如下两种方式:
a
直接定义对应字符串,如
#define
FUNC_NAME
"func"
字符串中的直接写明。
b
统一函数转换。利用宏定义的# *** 作,可以实现标识符向字符串的转换。
#define
FUNC_NAME(x)
#x
这时调用FUNC_NAME(func)就等效于"func"。
不可能做得完全一样!char s = "abc";这样的定义意思是“创建一个常字符串abc,将首地址(就是a的地址)赋给char型指针s”。可以设法让数组a变成字符串,再让一个s指针指向它,但目标却不是常量,也不在常量区。可以用下面的代码做个效果差不多的转换。
//#include "stdafxh"//If the vc++60, with this line#include "stdioh"
int main(void){
char a[3]={'a','b','c'},b[4];
const char s;
b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]='\0';
s=b;
printf("%s\n",s);
return 0;
}
看你的代码的意思是先把第一个冒号前面的字符串去掉,然后再分割标示符
给你个短的版本,如下
#include <stdioh>
#include <stringh>
#include <ctypeh>
int main(void)
{
char s[100] = "iios:12DDWDFF-ad_ff=2131_85+ASDF";
char p = strchr(s, ':')+1;
printf("[%s]\n", p);
char q = p;
while (p) {
if (!isdigit(p) && !isalpha(p) && p!='_') {
p = 0; // 添加字符串结尾保证q的结尾正确
printf("%s\n", q); // 这个q就是你要的字符串,如果你想保存成数组的话就开个数组把q存进去
q = p+1; // 指向下一个串
}
p++;
}
printf("%s\n", q); // 这里还有最后一个别忘了。
return 0;
}
对于int型,可以调用函数itoa。
charitoa(int value,charstring,int radix);
功能为将任意类型的数字转换为字符串。
int value 被转换的整数,char string 转换后储存的字符数组,int radix 转换进制数,如2,8,10,16 进制等。
float和double类型没有特定的转换函数。
不过不论是float, double还是int,都可以通过sprintf函数进行转换。
sprintf类似于printf,都是按照格式化字符串输出参数到目标。不过printf是输出到终端,而sprintf是输出到第一个参数的字符串中。
定义
int i;
float f;
double d;
再定义字符串空间
char buf[100];
调用
sprintf(buf, "%d",i);
sprintf(buf, "%f",f);
sprintf(buf, "%lf",d);
就可以分别把int, float, double转换成值对应的字符串。
逐个遍历输入字符,比如字符1对应的ASCII是48,转换关系可以为ASCII值-48。
拓展:
1、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s="abcdefghij",则s[1]="a",s[10]="j",而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。
2、字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s="a1a2···an"(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。通常以串的整体作为 *** 作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。
atoi: 把字符串转换成整型数
itoa:把整数转换为字符串
#include <stdlibh>
#include <stdioh>
int main(void)
{
int number = 12345;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0;
}
哇塞要上面那么复杂吗
使用itoa函数。
原型:extern char itoa(int i);
参考代码:
#include<stdioh>
#include<stdlibh>
int main()
{
int a=125;
char b[50];
printf("%s\n",itoa(a,b,10));//把10进制的125转成字符并输出。
return 0;
}
/
扩展资料:
注意事项
itoa() 函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制。
itoa 并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
标准库中有sprintf,功能比这个更强,用法跟printf类似:
参考资料来源:百度百科-itoa函数
C语言将int类型转换成字符串参照以下代码:
目前在一般的电脑中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]
在之前的微型机中,int占用2字节,16比特,数据范围为-32768~32767[-2^15~2^15-1]
使用printf输出int占用字节数量:
除了int类型之外,还有short、long、long long类型可以表示整数。
unsigned int 表示无符号整数,数据范围为[0~2^32-1]
以上就是关于c语言如何把某个函数名转换为字符串全部的内容,包括:c语言如何把某个函数名转换为字符串、C语言字符数组转换字符串、C语言将字符变成字符串的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)