C语言,字符串转换

作者&投稿:慎沾 (若有异议请与网页底部的电邮联系)
C语言函数库 里有没有 把字符串转化为浮点数 的函数啊?~

可以采用库函数atof, 头文件为#include
函数名: atof
功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);
实例:
#include
#include
intmain()
{
double d;
char*str="12345.67";
d=atof(str);
printf("string=%sdouble=%lf
",str,d);
return 0;
}

#include
#include
main()
{
char a[10]="12345.56";
float b=atof(a);
printf("%f
",b);
}

#include<stdio.h>#include<string.h>

int main()

{

 double calcu(char *str);

 double convertToDouble(char *str,int n);

 char strdes[50];

 gets(strdes);

 printf("%.4f
",calcu(strdes));

 calcu(strdes);

 return 0;

}

 

double convertToDouble(char *str, int n)

{

 double result = 0;

 int index,level=1;

 

 index = n-1;

 while(index>=0)

 {

  result+=(str[index]-48)*level;

  level*=10;

  index--;

 }

 return result;

}

 

double calcu(char *str)

{

 int i,j,n;

 double p;

 n=strlen(str);

 for(i=0;i<n;i++)

 {

  if(str[i]<48||str[i]>57)

  {

   j=i;

   while(j<n-1)

   {

    str[j] = str[j+1];

    j++;

   }

   n--;i--;

  }

 }

 if(!n)

 {

  printf("the digital string isempty!
");

  return 0;

 }

 else

  return convertToDouble(str,n);

}

 

 



汗……如果你说你学过别的编程语言就算了,如果你只学过C语言,那你应该有做过字符串型数值转换成int 或 float型数值的练习。
double result = 0;
for (i = 0; i < n; ++i)
result = result * 10 + a[i] - '0';
p=(double*)str; 没有这种转换方式,别的一些语言可能用 strtodouble(str)这种函数而已。

其实非常简单,根本不用像你上面写的那样,不用先把里面的非数字的字母去掉。
完全可以用个判断语句过滤就好了。
double result = 0.0;
for (i = 0; i < n; ++i)
if (a[i] >= '0' && a[i] <= '9')

result = result * 10 + a[i] - '0';

return result;
你试试吧。基本没问题了,如果数值比较大的话,这个题目也不会要求转换成double型结果输出了。

#include<stdio.h>

#include<string.h>

//double calcu(char *str)

void calcu(char str[])

{

 int i=0,j=0,n,m;

 char s[20] ;

 double p;

 n=strlen(str);

m=n;

   for(i=0,j=0;i<n   ;i++)

   {

    if (*(str+i)>=48 && *(str+i)<57)

    {

   

    *(s+j)=*(str+i);

 j++;

 m--;

    }

   }

 

 if(!n)

  printf("the digital string isempty!
"); 

 else 

 {

s[j]='\0';

 p=atoi(s);

 

// printf("%d",a);

       printf("%.4f
",p);

 

 }

 

}

int main()

{

 void calcu(char str[]);

 char strdes[50];

 gets(strdes); 

 //printf("%.4lf
",calcu(strdes)); 

 calcu(strdes);

 return 0;

}



首先,for循环的逻辑有点问题,内层循环这样改
for(i=0.......) //外层不用改
{

if(*(str+i)<48 || *(str+i)>57)
{
for(j=i;j<n-1;j++)
{
*(str+j)=*(str+j+1);
}
n--;
}

} //外层

第二个,你的 p=(double*)str; 转不过去;
用 sscanf吧

#include<stdio.h>
#include<string.h>
void main()
{char a[80];
int i,j;
double result=0.0;
gets(a);
for(i=0,j=0;a[i]!='/0';i++)
if(a[i]>='0'&&a[i]<='9')
{a[j++]=a[i];result=result*10+a[j-1]-'0'}
printf("%.4lf",result);;
}

希望对你有帮助


怎么用汇编语言将数字组成的字符串转换成数值
datacate PROC NEAR PUSH CX (CX中保存的是实际有效字符数)DEC CX LEA SI,buf+2 (将SI指向字符串的首地址)d1: INC SI LOOP d1 (利用LOOP循环将到寄存器SI指向字符串的尾部,应该是倒数第二个字符)POP CX MOV DL,30h;MOV BL,10 MOV AX,1 d2:...

C语言 如何将字符串转换成数字。不用指针和函数库,求解答
C语言 里字符 是用 ascii 码复式存放的 比如 '0'的ASCII 码是48,如果一个字符ch是数字,那么,ch-'0' 的值 就是 ch代表数字的值 因此 事先 要判断一下 比如 if (ch >= '0' && ch <='9') digi=ch -'0'

C语言如何把一个字符串转换成数字?
C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。\\x0d\\x0a头文件:stdlib.h\\x0d\\x0a函数原型:int atoi(const char* nptr);\\x0d\\x0a(另外两个类似)\\x0d\\x0a\\x0d\\x0a举个例子:\\x0d\\x0achar *str="123";\\x0d\\x0aint num...

...输入一个数字字符串编写一个函数将数字字符串转换为一个整数不得调...
include \/\/编写一个函数将一个整数的各位数提取出来,并将其转换成数字字符串,\/\/在主函数中输出该字符串,不用指针,用简单点的C语言。int main(){ int number_int,i,str_len;char number_str,swap_temp;scanf("%d",&number_int);i=0;while(number_int){ number_str=number_int%10+48;n...

怎么用汇编语言将数字组成的字符串转换成数值
假定这些字串是正整数;先把寄存器清零,比如 Mov ax,0 先取那个字串的最高位字符,然后转成相应的数字, 比如“0”的ASCII码是48,把这个串减去48就是所代表的数字 然后把这个数加到寄存器中 如果还有字串要加入的话,就把寄存器乘10,加入新的字符 直到最后出了这个字串的数值。其他格式的类似,...

将输入的字符串大小写进行转换并输出例如输入“aBc”输出“AbC”的代码...
可以使用 Python 内置函数 str.swapcase() 来实现字符串大小写的转换,具体代码如下:运行程序后,可以输入任意大小写组合的字符串,程序将输出对应大小写转换后的结果。

C语言中字符串如何转换为二进制、八进制、十进制、十六进制
什么意思,?没懂,,,是说转为 2 8 16进制的整数?只要是整数 int。就只有大小。没有进制的区别。所谓的进制,只是为了人为识别。但是可以把整数,转换为响应进制的字符串。举例 char num[] = "15";int val = atoi(num); \/\/字符串转为整数 char tem[16] = {};_itoa(val,tem,2);\/...

C语言编程,使用指针,完成一字符串中大小写的转换
include <stdio.h> include <ctype.h> void convertToUppercase(char *); void main() { char string[] = "characters and &32.98"; printf("The string before conversion is: %s", string); convertToUppercase(string); printf("\/nThe string after conversion is: %s\/n", string); } v...

C语言 字符串转换浮点 小数点后9位
可以使用库函数atof。1、函数名 :atof2、声明 :double atof(const char *nptr);3、头文件: #include <stdlib.h>4、功能:将参数nptr中的字符串转为浮点型数据并返回。5、需要注意的是,必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。 比如"...

C语言,字符串大小写转换的最优解决。考虑非ASCII字符集情况。
} void btol(char* big){ int i=0;while(big[i])big[i++] |=0x20;\/\/置第5位为1 } void main(){ char str[]="abcdedABCDS";ltob(str);printf("转大写:%s\\n",str);btol(str);printf("转小写:%s\\n",str);} 你可以自己运行下,世上最优算法 一条汇编指令搞定 ...

镇康县15537994015: C语言 字符串转换 -
柳帜鱼腥: int i,j=0,sum=0; char b[100],a[100]; scanf("%s", b); for(i=0 ; b[i]!='\0' ; i++) { if(isdigit(b[i])==1) { a[j]=b[i];//如果是数字把b[i]的数赋给a[j] j++; } } for(i = 0 ; i{ sum = sum + (a[i] - 48)*pow(10,j - i - 1); // a[i]内是字符转换成十进制数ASCII-48 } printf("%d",sum*2);

镇康县15537994015: c语言怎么把几个字符转换成一个字符串 -
柳帜鱼腥: 多个字符串转成一个字符串,可以看出字符串拼接,使用字符串拼接strcat()函数来完成. 工具:DEV C++ char strcat (char *dest, const char *src ); strcat()会将参数src字符串拷贝到参数dest所指的字符串尾. 参考代码: #include<stdio.h> ...

镇康县15537994015: C语言:字符串转换 -
柳帜鱼腥: #include<stdio.h> void main() { int i=0,j=0; char ch[50]; scanf("%s",ch); while(ch[i]!=NULL) {if(ch[i]<='9'&&ch[i]>='0') {ch[j]=ch[i];j++;}i++; } ch[j]=NULL; for(i=0;ch[i]!=NULL;i++) printf("%lf\n",(double)(ch[i]-'0')); getchar(); getchar(); }

镇康县15537994015: C语言 把数字字符串转化成整数 -
柳帜鱼腥: 字符串是不能转换成整数的,单独一个数字字符可以转换为整数. 例如:字符'0'可以转换成整数 48字符'1'转换成 49....字符'9'转换成 57 原理:C语言中的int类型和 char类型在 0--255值域范围内可以通用. 例如:int a;a=65;printf("%c",a);输出:A 再举例:char b;b='a';printf("%d",b);输出:97

镇康县15537994015: 整型转换字符串的库函数 C语言 -
柳帜鱼腥: 最通用的方法是使用sscanf函数和sprintf.可以进行任何转换,不必记住各具体转换函数 如 char str="hello a 10 3.14159"; char a[6]; char b; int c; double d; sscanf(str, "%s %c %d %lf", &a, &b, &c &d);char temp[80]; sprintf(temp, "%6s %c %d %lf", a, b, c, d);

镇康县15537994015: C语言如何将一个数字组成的字符串转变成十进制数 -
柳帜鱼腥: 办法很多,提供三种供参考. 一、直接使用库函数atoi将数字字符串转换成十进制整数.代码如下: #include "stdio.h" #include "stdlib.h"//调用库函数atoi要包含这个文件 int main(int argc,char *argv[]){char a[]="478167831";printf("%d\n",...

镇康县15537994015: C语言 字符串字母大小写转换? -
柳帜鱼腥: #include<stdio.h> int main() { char c; while((c=getchar())!='#') { if((c>='a'&&c<='z') || (c>='A'&&c<='Z')) putchar(c^0x20); else putchar(c); } return 0; }

镇康县15537994015: C语言 麻烦帮写个字符串转换的程序 -
柳帜鱼腥: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17#include <stdio.h> #include <string.h>#define MAX_LEN 100voidstr_convert() {charstr[MAX_LEN+1];scanf("%100s", str);printf("string: %s\nlength: %d", str, strlen(str)); }intmain() {str_convert();return0; }

镇康县15537994015: 用c语言编程:将一个8进制的字符串转化为十进制的数. -
柳帜鱼腥: #include <stdio.h> #include <string.h>int main() {int l,i,num=1,sum=0;char a[100];puts("input(以大写字母为标准):");gets(a);l=strlen(a);for(i=1;i<=l;++i){if(a[l-i]>'7'||a[l-i]<'0'){puts("输入有误");exit(0);}sum=sum+(a[l-i]-'0')*num;num*=8;}printf("%d\n",sum); }

镇康县15537994015: 怎么C语言编写一个函数字符串的大小写转换 -
柳帜鱼腥: 1)全部转成大写---strupr函数原型:char*strupr(char*src)函数说明:将字符串src转换成大写形式,只转换src中出现的小写字母,不改变其他字符返回值:返回指向src的指针.2)全部转成小写---strlwr函数原型:char*strlwr(char*src)函数说明:将字符串src转换成小写形式,只转换src中出现的大写字母,不改变其他字符返回值:返回指向src的指针.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网