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

我自己试了一下
#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汗 上课睡过去了。。

好吧
我给你看看我的程序吧
#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;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-03
  第一种用“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();
  }本回答被网友采纳
第2个回答  2018-04-03

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

#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;
}

第3个回答  2020-01-03
看你允不允许使用库函数了,或者是要自己编程来实现这个功能,如果是为了简单使用那么用库函数atoi()即可,比如char
*c="123";那么int
k=atoi(c);这样k的话就是123了,如果是编程来做,那么可以从字符串结束符\0的前1个开始回退,没退一次则系数*10,不过这样的话还需要检测非法输入等情况如何处理。
第4个回答  推荐于2016-10-11
for循环里你没有判断字符串结束,把字符串后面的也加进去了。

for(i=0;s[i]!='\0';i++){
number[i]=s[i]-'0';
n=n*10+number[i];
}本回答被提问者采纳
相似回答