C语言中怎么将一个整数字符串转换为一个数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中怎么将一个整数字符串转换为一个数相关的知识,希望对你有一定的参考价值。

C语言中怎么将一个整数字符串转换为一个数

#include<stdio.h>

//把一个整数字符串转换为一个数。

intascii_to_integer(char*string)

intvalue;value=0;

//逐个把一个整数字符串转换为一个数。

while(*string>='0'&&*string<='9')

value*=10;

value+=*string-'0';

string++;

//错误检查:如果由于遇到一个非数字字符而终止,把结果设置为0

if(*string!='\\0')

value=0;

returnvalue;

intmain()

char*numChar="102";

printf("%d\\n",ascii_to_integer(numChar)+3);

return0;

扩展资料

C语言转义字符

1、使用制表符格式化输出

横向制表符\\t可以用于格式化文本输出,假如我们要输出一组表格样式的数据,一种方法是使用输出多个空格对齐,另一种方法就是使用\\t。在下面的程序中,我们为表格的第1列与第2列应用两次\\t以使列之间有更多的间距。

2、使用反斜框输出文件路径

当我们需要在程序的运行日志或调试时输出文件路径信息,又或者像下面这样,简单的将一个路径输出到控制台,这时我们需要使用反斜框转义符来进行路径转义输出。

参考技术A 可以这么办
假如一个字符串为string[10]="1234"; int number=0;
for(i=0;string[i]!='\0';i++)
number=number*10+string[i]-48;

number就是把string里的字符串转化成整数的结果本回答被提问者采纳
参考技术B #include<stdlib.h>
int
atoi(const
chat
*str);
功能:将字符串str转换成一个整数并返回结果。参数str
以数字开头,当函数从str
中读到非数字字符则结束转换并将结果返回。例如,

i
=
atoi(
"512.035"
);
i
的值为
512.
还有相应的int
atol(const
chat
*str);转为long
int
atof(const
chat
*str);转为float
参考技术C 如果是char *num="12345"
可以用atoi函数
int number;
number=atoi(num);
头文件是stdlib.h

C语言编程 计算一串字符中的数字个数

题目描述

小明的老师给小明出了一道题目:数数一篇文章出现了多少个数字,请你帮帮他吧。
输入

输入一个字符串,由空格、英文字母、数字组成,以回车结束,长度小于1000。
输出
输出整数个数(不是数字字符个数哦)。
样例输入
5436grh 74h74 57 74rg 63664greg743

样例输出
7

下面是我的错误代码

#include <stdio.h>
int main()

char str[1006];
int i,flag=0;
int count=0;
gets(str);
for(i=0;str[i]!='\0';i++)

if('0'<=str[i]&&str[i]<='9')
flag=1;
if('0'<=str[i+1]&&str[i+1]<='9'&&flag==0)

count++;
flag=1;


printf("%d\n",count);
return 0;

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

int main()

char szText[1006] =  0 ;
int count=0;
int nFlag = 0;
gets( szText );

for ( int i = 0; i < strlen( szText ); i++ )

if ( szText[i] <= '9' && szText[i] >= '1' )

if ( nFlag == 0 )

count++;
nFlag = 1;


else

nFlag = 0;



printf("%d\\n",count);
return 0;

稍微修改了一下,楼主可以参考

追问

厉害! 您能讲下思路吗 对了我都不知到为什么 看上去这个代码是不能完成目的的 但就是对了

追答

1,设置nFlag 变量,标志上一个字符是否是数字,如果非数字就设为0,就是下面这句

else

    nFlag = 0;

2,如果一个字符是0~9之间数字,我们判断是否是一个新的数字开始,如果是一个新的数字开始的话前一个字符肯定就是非数字,那么这个时候nFlag == 0; 这样我们就可以确定一个新的数字开始,就把count增加1(count++),同时把nFlag 设为1,表示开始一个数字,如果下一个字符还是数字的的话nFlag == 1;我们就不增加count,直到遇到非数字,把nFlag设为0,之后新的数字开始再增加count计数

参考技术A #include <stdio.h>
int main()

char str[1006];
int i,flag=0;
int count=0;
gets(str);
for(i=0;str[i]!='\0';i++)


if('0'<=str[i]&&str[i]<='9')

flag=1;
continue;

else

if(flag==1)

count++;

flag=0;


if(flag==1)count++;
printf("%d\n",count);
return 0;
追问

我现在能看懂了

追答

从第一个数开始 如果是数字,那么标记flag=1,然后跳过下面的语句开始考虑下一个数,直到遇到不是数字的字符,如果此时的flag=1,即说明这个字符的前面一个是数字,因为遇到了字母 所以前面的就能算是一个整数了 此时count++,并将flag重新置为0,重复上述步骤,最后一步时,因为你的循环是当str[i]==0的时候退出循环,那么最后一个整数(假设有,就像例子)会被漏掉,所以在循环外面又加了一层判断

本回答被提问者采纳
参考技术B 不会啊,sorry

以上是关于C语言中怎么将一个整数字符串转换为一个数的主要内容,如果未能解决你的问题,请参考以下文章

c语言中实现输入一个数字字符,然后转换成整数数字输出.怎么做?

C里面怎么把字符串转成数字

用C语言递归法将一个整数化为字符串

c语言整数转字符串

c++ string int

C语言中如何将数字变成字符串啊?