C语言怎么把字符串转化为整形数字 是-'0'吗

我自己试了一下#include<stdio.h>#include<math.h>intmain(void){inti,n=0;intnumber[80];chars[80... 我自己试了一下
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,n=0;
int number[80];
char s[80];
gets(s);
for(i=0;i<80;i++){
number[i]=(s[i]-'0');
n=n*10+number[i];}
printf("%d",n);
}
我输入13579输出的结果不是 13579 我哪里错了
还有gets(s)的用法是这么用的吗
还有个问题 我记得老师上课讲过一个控制的东西 是可以给出字符串长度的 求是什么。。⊙﹏⊙b汗 上课睡过去了。。
展开
 我来答
创作者EyRNy7zKfP
2020-03-02 · TA获得超过3755个赞
知道大有可为答主
回答量:3148
采纳率:30%
帮助的人:146万
展开全部
好吧
我给你看看我的程序吧
#include<stdio.h>
#include<cstring>
int main()
{
char zifu[80];
int shuzi[80];
gets(zifu);//你的gets用对了哦
for(int i=0;i<strlen(zifu);i++)//由于字符数组下表从0开始 所以是0
{//同时strlen(zifu)是zifu数组的字符数量 如果用80会有空字符的哦
shuzi[i]=zifu[i]-'0';//是-'0' 也可以写成-48
}
for(int i=0;i<strlen(zifu);i++)
printf("%d",shuzi[i]);
return 0;
}
汝且为寿而康0
推荐于2018-04-03 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:3864万
展开全部
  第一种用“atoi”的:
  #include "stdio.h"
  #include "stdlib.h"
  #include "conio.h"
  void main()
  {
  char str[1024] = {0};
  int Interger;
  printf("输入一个数字:\n");
  scanf("%s", str);

  Interger = atoi(str);

  printf("转换为整形:%d\n", Interger);
  getch();
  }

  第二种:
  #include "stdio.h"
  #include "stdlib.h"
  #include "conio.h"
  void main()
  {
  char str[1024] = {0};
  int Interger;
  printf("输入一个数字:\n");
  scanf("%s", str);
  sscanf(str, "%d", &Interger);
  printf("转换为整形:%d\n", Interger);
  getch();
  }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陆仁淼
2018-04-03 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:83%
帮助的人:49.8万
展开全部

好吧  我给你看看我的程序吧

#include<stdio.h>
#include<cstring>
int main()
{
 char zifu[80];
 int shuzi[80];
 gets(zifu);//你的gets用对了哦
 for(int i=0;i<strlen(zifu);i++)//由于字符数组下表从0开始   所以是0
 {//同时strlen(zifu)是zifu数组的字符数量   如果用80会有空字符的哦 
  shuzi[i]=zifu[i]-'0';//是-'0'    也可以写成-48 
 } 
 for(int i=0;i<strlen(zifu);i++)
 printf("%d",shuzi[i]);
 return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者PG4qH6wf95
2020-01-03 · TA获得超过3966个赞
知道大有可为答主
回答量:3177
采纳率:34%
帮助的人:160万
展开全部
看你允不允许使用库函数了,或者是要自己编程来实现这个功能,如果是为了简单使用那么用库函数atoi()即可,比如char
*c="123";那么int
k=atoi(c);这样k的话就是123了,如果是编程来做,那么可以从字符串结束符\0的前1个开始回退,没退一次则系数*10,不过这样的话还需要检测非法输入等情况如何处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
推荐于2016-10-11 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:1048万
展开全部
for循环里你没有判断字符串结束,把字符串后面的也加进去了。

for(i=0;s[i]!='\0';i++){
number[i]=s[i]-'0';
n=n*10+number[i];
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式