如何解决在 C 中使用 char* arr 输入和读取超过 200 个字符的超长数字
我被困在一项作业上,我必须从控制台读取非常长的数字,然后使用 char* arr 将其打印出来。然后我需要将数字 1 数组添加和减去数字 2 数组。老实说,我可能会自己处理加减法,但我无法弄清楚如何逐个字符地读取这些输入字符,并在控制台输入后中断。
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int subtract(const char* number1,const char* number2,char** result){
if(number1 == NULL || number2 == NULL){
return 1;
}
return 0;
}
int add(const char* number1,char** result) {
if(number1 == NULL || number2 == NULL){
return 1;
}
return 0;
}
int input_check(int check,char* number) {
if (check != 1) {
return 1;
}
else {
return 0;
}
}
int main()
{
char* number1;
//char* number2;
//char** result;
int check = 0;
number1 = (char*)calloc(200,sizeof(char));
//number2 = (char*)calloc(200,sizeof(char));
//result = (char*)malloc(sizeof(char) * sizeof(char) * 400);
if (number1 == NULL) {
printf("Failed to allocate memory");
return 8;
}
printf("Input first num: ");
int i = 0;
while (1) {
char retVal;
scanf("%c",&retVal);
if (retVal >= 48 || retVal <= 57 || retVal != '\0') {
*(number1 + i) = retVal;
if ((number1 + i) == NULL) {
break;
}
printf("%d",atoi((number1 + i)));
i++;
}
else
{
break;
}
}
return 0;
}
感谢您的帮助
解决方法
由于没有数量限制,所以需要使用动态内存分配。
直接(蛮力)方法是不断增加分配的大小
char *input = calloc(1,1); // space for '\0'
size_t len = 0;
for (;;) {
int ch = getchar();
if (ch != '\n') {
input[len] = ch; // replace '\0' with ch
len++;
char *tmp = realloc(input,len + 1);
if (tmp == NULL) exit(EXIT_FAILURE);
input = tmp;
input[len] = 0; // add '\0'
} else {
break;
}
}
// use input and len
free(input);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。