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

题目要求
从键盘上输入一个数字组成的字符串(字符串长度小于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
请问需要怎么改才能不警告 谢谢了 @!

#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);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-08
#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);
}
相似回答