你输入了什么 num1和num2
【以下回答由 GPT 生成】
这段C语言代码的问题主要集中在输入和类型转换方面。下面是对代码中问题的分析和修改建议:
gets()
函数接收字符串输入,这是不安全的,因为它没有限制输入的字符数量,容易导致缓冲区溢出。建议改用安全的输入函数fgets()
。定义num1
和num2
为整型数组,而应该定义为字符数组以接收字符串输入。
数字转字符串问题:
sprintf()
函数。下面是修改后的代码:
#include<stdio.h>
#include<string.h>
int main(){
char num1[100];
char num2[100];
int i = 0;
int n = 0;
int m = 0;
int j = 0;
printf("输入两个字符串: ");
fgets(num1, sizeof(num1), stdin);
fgets(num2, sizeof(num2), stdin);
while(num1[i] != '\0'){
n = n * 10 + num1[i] - '0';
i++;
}
while(num2[j] != '\0'){
m = m * 10 + num2[j] - '0';
j++;
}
int sum = m + n;
char sum_str[10];
sprintf(sum_str, "%d", sum);
printf("%s", sum_str);
return 0;
}
这样修改后的代码可以修复输入问题,也可以将sum
的结果转化为一个字符串。
请注意,为了将sum
转换为字符串,我添加了一个字符数组sum_str
作为存储结果的容器,并使用sprintf()
函数将sum
格式化为字符串。根据需要,您可以调整sum_str
的大小来适应更大的数值范围。
【相关推荐】