gpt4 book ai didi

C 中无需库函数将字符串转换为整数

转载 作者:行者123 更新时间:2023-11-30 18:38:09 25 4
gpt4 key购买 nike

我必须编写一个程序,将用户输入(字符串)转换为整数。同时它应该检查用户输入是否确实是一个数字。而且一切都在一种方法中。

并且不允许使用库函数。

我不知道该怎么做。我一开始得到的只是这个可悲的结构

#include <stdio.h>

void main()
{
char input[100];
int i;
int sum = 0;
printf("Type a String which will be converted to an Integer: ");
scanf("%c, &input");

for (i = 0; i < 100; i++)
{

}
}

非常感谢您的帮助,谢谢

最佳答案

转换是简单的部分......

但是如果你一定不能使用库函数,

  • 只有一种方法获取字符串,那就是argv
  • 只有一种方法可以给出一个整数,那就是程序的退出代码。

所以,不用多说:

int main( int argc, char * argv[] )
{
int rc = 0;
if ( argc == 2 ) // one, and only one parameter given
{
unsigned i = 0;
// C guarantees that '0'-'9' have consecutive values
while ( argv[1][i] >= '0' && argv[1][i] <= '9' )
{
rc *= 10;
rc += argv[1][i] - '0';
++i;
}
}
return rc;
}

我没有实现对 '+''-' 的检查,也没有想出一种方法来表示“输入不是数字”。我也只是在第一个非数字处停止解析。所有这些可能都可以改进,但这应该让您了解如何解决“无库函数”限制。

(因为这听起来像是一项家庭作业,所以您应该必须编写一些自己的代码。我已经为您提供了关于 argv 的三大帮助'0'-'9' 以及转换本身。)

<小时/>

调用方式:

<program name> <value>

(例如./myprogram 28)

使用(对于 Linux shell)检查返回代码:

echo $?

在 Windows 上,它是关于 echo %ERRORLEVEL% 或类似的东西......也许有用的 Windows 用户会对此发表评论。

<小时/>

'0'-'9' 连续”声明的来源:ISO/IEC 9899:1999 5.2.1 字符集,第 3 段:

In both the source and execution basic character sets, the value of each character after 0 in the above list of decimal digits shall be one greater than the value of the previous.

我确定这已保留在 C11 中,但我只有较旧的 C99 论文可用。

关于C 中无需库函数将字符串转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com