gpt4 book ai didi

将 String 转换为 Int 并再次返回字符串 C

转载 作者:行者123 更新时间:2023-11-30 14:32:41 26 4
gpt4 key购买 nike

我在大学有一项作业要做。赋值是获取某种字符串,将其转换为整数,进行计算并返回字符串。

这就是我到目前为止所做的,我不太擅长 C,所以任何形式的帮助都会很棒。

#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
typedef char* verylong;
verylong multiply_verylong(verylong vl1, verylong vl2);
verylong input_long();
verylong add_verylong(verylong vl1, verylong vl2);


verylong input_long()
{
verylong string=NULL;
char arry[1000];
int input;
printf("enter your verylong number");
gets_s("%s",arry);

for (int i = 0; i < 1000; i++)
{
if (arry[i] == '\n')
{
input = i - 1;
string = (verylong)malloc(i);
break;
}
if ((arry[i] < 48) || (arry[i] > 57))
{
printf("invalid number");
return NULL;
}
}

for (int j = 0; j < input; j++)
{
string[j] = arry[j];
}
string[input + 1] = '\0';

return string;
}

verylong add_verylong(verylong vl1, verylong vl2)
{
verylong input;
char res;
int numofvl1, numofvl2, result, i, j;
numofvl1 = atoi(vl1);
numofvl2 = atoi(vl2);
result = numofvl1 + numofvl2;
input = (int)malloc(result);
snprintf(input,10, "%d", result);
return input;
}
verylong multiply_verylong(verylong vl1, verylong vl2) {
verylong input;
int numofvl1, numofvl2, result;
numofvl1 = atoi(vl1);
numofvl2 = atoi(vl2);
result = numofvl1 * numofvl2;
input = (int)malloc(result);
snprintf(input, 10, "%d", result);
return input;
}


void main()
{

verylong a, b, c;
do {
printf("enter the first long integer: ");
a = input_long();
} while (!a);
do {
printf("enter the second long integer: ");
b = input_long();
} while (!b);
c = add_verylong(a, b);
printf("%s + %s = %s\n", a, b, c);
free(c);
c = multiply_verylong(a, b);
printf("%s * %s = %s\n", a, b, c);
free(c);
free(a);
free(b);

system("pause");
}


“verylong input_long()”函数用于检查用户是否仅输入了数字字符串。如果他没有,它应该返回 null 并打印无效的数字。关于第二个功能我不确定。我尝试过使用 atio() 但它似乎不起作用。

再次感谢任何形式的帮助。谢谢你们。

编辑:我的第一个函数 input_long() 出了问题;如果有人知道我应该做什么那就太好了。我想得到一个字符串,看看它是否都是数字,如果不是。它应该打印一条消息并返回 null

最佳答案

你不应该像这样返回 char *,请参阅: How can I return a character array from a function in C?

您的方法不能支持超过 19 位数字(更不用说现在,如果您使用 unsigned long long 则可以支持 19 位数字)。

但是,如果您需要支持最多 999 位数字,我会采用完全不同的方法:您应该自己逐位计算,这样您支持的位数就没有限制(仅受输入缓冲区大小的限制)。

加上 input_long arry 可能会以\0 结尾,而不是\n ,你应该检查两者。

关于将 String 转换为 Int 并再次返回字符串 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59721462/

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