如何读取argv的数字参数?

本文介绍如何在C语言程序中从命令行参数argv读取并解析数字值。通过示例代码展示了对argv[1]进行处理,将其转换为数值的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   今天要把argv里面的数字读取出来,开始是用下面的方法:

  1. for (= 0; i < (*(argv[1]) - '0'); i++) {
哎怎么回事?用gdb调试一下:
  1. (gdb) set args 20
  2. (gdb) start
  3. Temporary breakpoint 1 at 0x8048b1b: file client.c, line 7.
  4. Starting program: /home/risen/projects/client 20

  5. Temporary breakpoint 1, main (argc=2, argv=0xbffff6d4) at client.c:7
  6. {
  7. (gdb) p argv[1]
  8. $1 = 0xbffff822 "20"
  9. (gdb) p *argv[1]
  10. $2 = 50 '2'
  11. (gdb)
终于找到问题,原来直接用*argv[1]只能得到第一个数字的字符,也就只能读取0~9这十个数。奇怪,为什么会这样呢?为什么得到的是一个字符而不是字符串? 如果哪位大神知道原因的话还望赐教,小弟不胜感激
   百度之后发现 atoi() 函数成功解决了这个问题:(以下引自百度百科)
函数名: atoi
用 法: int atoi(const char *nptr);
功 能: 将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回(返回转换后的整型数)。


// 例程:
#include<stdlib.h>
#include<stdio.h>
int main(void)
{
    float n;
    char const *str="12345.67";
    n=atoi(str);
    printf("string=%sfloat=%f\n",str,n);
    return 0;
}

输出结果:
string = 12345.67 float = 12345.000000


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值