题目如下图所示:
题目要求以字符串的形式输入,以整形的形式打印出数值。
方法一:使用标准库函数
#incude <stdio.h>
int main()
{
char arr[20] = {0};
long target = 0;
printf("string:");
gets(arr); //输入要转换的字符串
target = atoi(arr); //使用库函数atoi字符串转数字
printf("number:%ld\n", target);
return 0;
}
方法二:自己写代码实现
如果说输入字符的格式,但是用整形数字的形式输出的话,那么就会输出该数字的对应ASSIC码!
如果说我们要输入字符的’1’,以整数的形式输出数值1的话,那么就需用 ‘字符’ - ‘0’ = 数值原型。
谨记这点!!!
#include <stdio.h>
int convert(const char* arr)
{
long target = 0; //最后要输出的目标
int i = 0; //循环条件
if (arr != NULL)
{
if(arr[0] == '-') //如果第0个是负号-
i++;
while (arr[i]) //"1234"
{
target = target*10 + arr[i]-'0'; //0*10=0 0+1=1依次类推
i++;
}
if (arr[0] == '-') //如果第0个是负号-,那么就赋值一个负号-
target = -target;
}
return target;
}
int main()
{
char arr[20] = {0};
printf("string:");
gets(arr); //输入要转换的字符串
long ret = convert(arr); //字符串转整形
printf("number:%ld\n", ret);
return 0;
}
结果: