【问题标题】:Function that changes number in string to int将字符串中的数字更改为 int 的函数
【发布时间】:2020-04-18 13:47:02
【问题描述】:

我正在尝试用 c 编写一个函数,将字符串中的数字更改为整数。例如“一”到 1。这是我目前的代码,但它没有按预期工作,我找不到问题。

【问题讨论】:

  • 您能否详细说明“无法正常工作”是什么意思?
  • strcmp 区分大小写。你确定所有字符的大小写都匹配吗?
  • num 没有理由成为函数参数。它应该只是一个局部变量。
  • 到底是什么问题?你有错误吗?结果错误?
  • 它无法正常工作,因为它没有返回正确的 num 值。因此,例如 value 可能是“Seven”并且 num 将返回为 1 这就是为什么我猜测 if 语句有问题。

标签: c string function if-statement int


【解决方案1】:

调用时没有使用函数的返回值:

toint(array[i-1], lastval);

另外,C 中的参数是传值的,这意味着函数中参数的更改不会反映在调用函数中,因此无需传入lastvar

改函数去掉第二个参数:

int toint(char value[10]){
    int num = 0;
    ...

添加将返回值赋值给lastval

lastval = toint(array[i-1]);

【讨论】:

  • 此解决方案有效。这仍然不是我想要的,但我认为这次是 rand() 的问题。
【解决方案2】:

这很好用:

char *numbers[] = {
    "Zero", "One", "Two" ,"Three", "Four", "Five",
    "Six", "Seven", "Eight", "Nine", "Ten"
};

int tonum( char *str ) {
    for( int i=0; i<11; i++) {
        if( !strcmpi( str, numbers[i]) ) return i;
    }
    return -1;  // not found
}

然后你这样称呼它:

print( "%s is %d\n", "Seven", tonum("seven") );

strcmpi() 负责处理大写/小写内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多