gpt4 book ai didi

C程序调用一个字符串到int函数,我无法转换输入

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:49 25 4
gpt4 key购买 nike

我想将字符串转换为 int 并从 main 调用该函数。其中第一个字符是声明数字基数的字母,字符串中的其余字符是数字。我能够让函数单独工作,但是当使用 main 函数调用它时,它不会打印出正确的值。

使用二进制的用户输入示例:

b1000
b1010

结果应该是:

b
b
1000
1010

代码如下:

#include <stdio.h>
#include <string.h>
#include <math.h>

int str_to_int(inputbase) {
char num1[50];
num1[50] = inputbase;

char numcpy1[sizeof(num1) - 1];

int i, len1;
int result1 = 0;

//printf("String: ");
//gets(num1);

//Access first character for base
printf("%c \n", num1[0]);

//Remove first character for number1 and number 2
if (strlen(num1) > 0) {
strcpy(numcpy1, &(num1[1]));
} else {
strcpy(numcpy1, num1);
}
len1 = strlen(numcpy1);

//Turn remaining string characters into an int
for (i = 0; i < len1; i++) {
result1 = result1 * 10 + ( numcpy1[i] - '0' );
}

printf("%d \n", result1);
return result1;
}

int main() {
char *number1[50], *number2[50];
int one, two;

printf("\nAsk numbers: \n");

gets(number1);
gets(number2);

one = str_to_int(number1);
two = str_to_int(number2);

printf("\nVerifying...\n");
printf("%d\n", one);
printf("%d\n", two);

return 0;
}

最佳答案

我想你的代码因为一些错误而无法编译。

排在第一位

 int str_to_int(inputbase)

其中 inputbase 没有类型定义。

如果这变成了

 int str_to_int(char * inputbase)

下一个改进点是一致的

 num1[50] = inputbase;

这样的分配有一组错误:

  1. num1[50] 表示访问第51项,但是索引从0到49只有50项
  2. 语句 num1[0] = inputbase;(以及任何其他正确的索引)是错误的,因为类型不同:num1[0]char,但是 inputbase 是指针
  3. num1 = inputbase; 也会出错(复制字符串 = 不能在C中使用,所以考虑做循环或者使用标准库函数strncpy)

因为这只是问题的开始,我建议从十进制输入开始,使用一些标准函数将 char* 字符串转换为 int(例如 atoi sscanf),然后在检查程序并发现它正确(如果需要)后,您可以避免使用标准转换并编写自己的 str_to_int

关于C程序调用一个字符串到int函数,我无法转换输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44999436/

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