c语言stoi函数用法 strlen函数用法c语言

哪位C语言大神帮看一下,改错 急急急,对的追加50分

#includestdio.h

10年积累的网站制作、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有阳高免费网站建设让你可以放心的选择与我们合作。

#includestdlib.h

#includectype.h

long stoi(char *s,int *i) //stoi函数返回类型应该跟返回值的类型一样

{

long n=0;

while(isdigit(s[*i]))

n=n*10+s[(*i)++]-48;//这里的字符为'0'、'1'、、、要变成数字

return n;

}

long add(char *s)

{

int i=0,*pi=i;//指针pi没有指向变量

char op;

long a=0,b=0,c;

a=stoi(s,pi);

op=s[(*pi)++];

b=stoi(s,pi);

switch(op) {

case '+':return a+b;

case '-':return a-b;

case '*':return a*b;

case '/':if(b==0){ printf("div!0");exit(0);}//这边两条语句加括号

return a/b;

default: printf("operator error!");exit(0);

}

}

int main(void)

{

char s[80];

gets(s);

printf("%s=",s);

printf("%ld\n",add(s));

return 0;

}

我运行过了才帖上来的,错误也都指出来了。分给我吧。

编写一个函数,将字符串转换成相应的整数。转换时,遇到非数字字符则停止转换。

int stoi(char s[]){

int n=0,i=0;

while (s[i]='0' s[i]='9'){n=n*10+(s[i]-'0');i++;}

return n;

}

C++里stoi函数要怎么使用?

int x;

char *s="123";

x=stoi(s);

完事

(stoi就是string to int 的缩写嘛)

c语言编程 把十进制转换为十六进制

方法一:

#includeiostream

#include string

using namespace std;

string DecIntToHexStr(long long num)

{ string str; long long Temp = num / 16; int left = num % 16; if (Temp 0) str +=

DecIntToHexStr(Temp); if (left 10) str += (left + '0'); else str += ('A' + left - 10); return str;}

string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()

{ string DecStr; while (cin DecStr) { cout "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:

#includeiostream

#include string

#includevector

#include sstream

#include math.h

using namespace std;int main()

{ string decStr; cin decStr; int num = stoi(decStr); vectorintv; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }

reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }   if (temp = 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }

if (temp = 9) { stringstream ss; string strTemp;

ss temp; ss strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout hexStr endl; return 0;}

扩展资料:

还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。

下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。

利用系统函数有

1. char *  itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){    itoa (aa, buffer, 16);    return (buffer);}

2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){    sprintf(buffer, "%x", aa);    return (buffer);}

3. 自己编写

如果参数只要两位数的整数,那么很简单。

代码如下:

#include stdio.h#include stdlib.h char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)

{    sprintf(buffer, "%x", aa);    return (buffer);} int main ()             

{  int num;  char * hex_str;  printf ("Enter a number: ");  scanf ("%d",num);  hex_str = inttohex (num);  printf ("Hexadecimal number: %sH\n", hex_str);  return 0;}

C++中,字符串怎么转数值?

字符串怎么转数值?

答:用函数 std::stoi()

函数原型:

int stoi (const string str, size_t* idx = 0, int base = 10);

int stoi (const wstring str, size_t* idx = 0, int base = 10);

base 是进制。

// 程序例子,转 十进制,16进制,2进制 的string 或 自动判断

#include iostream

#include string

int main ()

{

std::string str_dec = "2001, A Space Odyssey";

std::string str_hex = "40c3";

std::string str_bin = "-10010110001";

std::string str_auto = "0x7f";

std::string::size_type sz; // alias of size_t

int i_dec = std::stoi (str_dec,sz);

int i_hex = std::stoi (str_hex,nullptr,16);

int i_bin = std::stoi (str_bin,nullptr,2);

int i_auto = std::stoi (str_auto,nullptr,0);

std::cout str_dec ": " i_dec " and [" str_dec.substr(sz) "]\n";

std::cout str_hex ": " i_hex '\n';

std::cout str_bin ": " i_bin '\n';

std::cout str_auto ": " i_auto '\n';

return 0;

}

输出:

2001, A Space Odyssey: 2001 and [, A Space Odyssey]

40c3: 16579

-10010110001: -1201

0x7f: 127

=======================

上述方法比较新。老编译器可能不支持。

-------

其实最简单的是 c 的 sscanf( "12345","%d",x);

#include iostream

#include string

using namespace std;

#include stdio.h

接下来 c 的东西 可以 直接在 c++ 里 使用。


分享标题:c语言stoi函数用法 strlen函数用法c语言
标题路径:http://hbruida.cn/article/hpceco.html