【发布时间】:2021-08-21 18:12:21
【问题描述】:
我被困在一个作业上,我必须从控制台读取很长的数字,然后使用 char* arr 将其打印出来。然后我需要将数字 1 数组加减到 number2 数组。老实说,加减法我可能会自己处理,但我不知道如何逐个字符地读取这些输入字符,并在输入控制台后进行中断。
我的代码:
#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, const char* number2, 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 input1[MAXLEN + 1] = {0}, input2[MAXLEN + 1] = {0}, sum[MAXLEN + 2] = {0}; -
不,最大字符数没有限制
-
我认为在您的条件检查
retVal中,您的 OR (||) 需要替换为 AND (&&)。此外,一个方便的提示是您不必使用 48 和 57。您可以与'0'和'9'进行比较。检查 NUL 字符也可能没有用,因为输入行以换行符 ('\n') 而不是 NUL ('\0') 结尾。此外,如果您的号码是 200 个字符,则需要分配 201 以便在末尾有一个 NUL 终止符。 -
如果您将
*(number1 + i)替换为number1[i],您还将修复至少一个错误并使您的代码更具可读性。 -
或者至少,将
scanf替换为getchar。
标签: arrays c char dynamic-memory-allocation