C语言高手过来哦 请教一下!急啊~

题目要求从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数。例如:从键盘上输入12345,则程序运行的结果应当为:n=12345。下面是我... 题目要求
从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字符串转换成一个十进制数。
例如:从键盘上输入12345,则程序运行的结果应当为:n=12345。
下面是我的源代码
#include "stdio.h"
#include "string.h"
void main()
{ char s[10]; int i;
int n;
/**************found************/
n=0;
scanf("%s",s);
for(i=0;i<strlen(s);i++)
/**************found************/
n=n*10+s[i]-'0';
printf("n=%d\n",n);
}
运行后是没有问题的 但是编译的时候 出现了一个warning
说warning C4018: '<' : signed/unsigned mismatch
请问需要怎么改才能不警告 谢谢了 @!
展开
 我来答
ZD_Tinson
2010-06-08 · TA获得超过157个赞
知道小有建树答主
回答量:58
采纳率:0%
帮助的人:105万
展开全部
#include <stdio.h> //标准C运行库请用<>号 这个和warning没关系
#include <string.h>
void main()
{ char s[10]; int i;
int n;
/**************found************/
n=0;
scanf("%s",s);
for(i=0;(unsunsigned int)i < strlen(s);i++) //在i前面加上那句
//因为无符号和有符号比较 所以warning了 都强制转换成无符号后再比较就不会warning
/**************found************/
n=n*10+s[i]-'0';
printf("n=%d\n",n);
}
依米花堵8d
2010-06-08 · 超过23用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:51.6万
展开全部
#include <stdio.h>
#include <string.h>
void main()
{
char s[10];
int i;
int n;

n=0;
scanf("%s",s);
for(i=0;i<(int)strlen(s);i++)//这个位置加个(int)强制转换下就好了
{
n=n*10+s[i]-'0';
}
printf("n=%d\n",n);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式