c语言程序 输入字符就会溢出,怎么解决? 小弟新手,请各位达人帮忙。
作者&投稿:蹉袁 (若有异议请与网页底部的电邮联系)
你是说在语言中还是汇编?
如果反编译,用PE Editor修改就可以。
第一种方法:统计输入字符串的长度
#include
#include
int main()
{
char buff[100]={0};
printf("请输入一个字符串:");
scanf("%s",&buff);
printf("你输入字符串的个数为:%d
",strlen(buff));
}
第二种方法:遍历输入字符串,直到结束字符'\0'
#include
void main()
{
char str[1000],*p;
int word=0;
printf("请输入一个字符串:");
gets(str);
for(p=str;*p!='\0';p++)
word++;
printf("输入字符串的长度为:%d
",word);
}
当然输出字母就会出错,因为你的输入格式是%d,而不是%c
已修改(已调试):
注意输入中间有逗号。
#include <stdio.h>
void main()
{
int a,b,sum;
char ch1,ch2;
while(1)
{
if(scanf("%d,%d",&a,&b))
{
sum=a+b;
printf("%d\n",sum);
}
else if(scanf("%c,%c",&ch1,&ch2))
{
sum=ch1+ch2;
printf("%d\n",sum);
}
}
}
输入的时候格式要正确,输入的2个整数之间加空格就对了。程序没错误。
另外你这个while是死循环。
程序没错,错在你没对输入的东西进行检查。
#include <stdio.h>
void main()
{
int a,b;
int sum;
int i=1;
int j;
while(i==1)
{
if ((j = scanf("%d %d",&a,&b)) != 2)
{
printf("输入错误,请重新输入\n");
fflush(stdin);
continue;
}
sum=a+b;
printf("%d\n",sum);
}
}
歧冰迪巧: 当然输出字母就会出错,因为你的输入格式是%d,而不是%c已修改(已调试):注意输入中间有逗号.#include <stdio.h> void main() {int a,b,sum;char ch1,ch2;while(1){if(scanf("%d,%d",&a,&b)){sum=a+b;printf("%d\n",sum);}else if(scanf("%c,%c",&ch1,&ch2)){sum=ch1+ch2;printf("%d\n",sum);}} }
饶阳县18682958863: c语言中数据溢出的问题怎么解决? - ?
歧冰迪巧: 因int 类型的变量的大小只有四个字节,20的阶乘太大了 所以溢出,把count改成 long long型就可以了. #include<stdio.h> void main() { int nMax; long long count; printf("Enter the integer number:"); scanf("%d",&nMax); int n,j; for(n=0;n<=nMax;n++) { count=1; for(j=1;j<=n;j++) { count*=j; } printf("%d!=%lld\n",n,count); } }
饶阳县18682958863: C语言输入字符马上输出 - ?
歧冰迪巧: 这个简单啊,你用getch()不就行了? 程序示例: #inlcude<stdio.h>/*这个必须要,否则编译时会提示putchar()未定义*/ main() { char c; c=getch(); putchar(c); /*如果是Win-Tc,最好在这儿加一个"getch();",停留输出画面;*/ }
饶阳县18682958863: C语言关于数据溢出 - ?
歧冰迪巧: 这不是数据溢出.这是由于没有指定小数位数(系统默认输出6位小数,加上2位整数,就是要输出8位数字),float只能保证7位有效数字,多余位数上的数字是无效的. 如果以%.1f或%g格式输出,就不会出这种错了. 如果改为double类型(相应地,输入语句要改为%lf格式),这样可以有15位有效数字,也不会出这种错的.
饶阳县18682958863: 请教C语言高手,你们是如何防止数据计算溢出的 - ?
歧冰迪巧: 1. 根据数据类型和计算结果范围,选择合适的数据类型.2. 另外一种方式就是对输入数据进行限定,保证运算不会出现越界的可能.3. 还有一些其它复杂的计算方式,这里就不给你做介绍了
饶阳县18682958863: 在c语言编程中,如何避免整数运算溢出问题 - ?
歧冰迪巧: C语言编译时不会检查数据溢出问题,需要编程者自行注意数据溢出问题.而且据我的经验数据溢出问题会频繁出现在初学习当中,程序写多了就很少出现这样的问题了.
饶阳县18682958863: 如何解决c语言无符号溢出问题? - ?
歧冰迪巧: C语言中存在两种整数算术运算,有符号型和无符号型.无符号数运算:所有无符号数运算都是以2的n次方为模,(n是结果中的位数).所以它不存在运算时的没有那种所谓的“溢出”,当它超过范围时,从零开始重新计数!当一个无符号数...
饶阳县18682958863: 想请教关于 c语言 限制输入防溢出 - ?
歧冰迪巧: scanf("%d %d",&a,&b) 返回值是 正确地读入 的数的个数. 这句输入2个参数,全读对了 返回值是 2.所以 不等于 2 就是输入数据(格式)错了,就要求 重新输入.
饶阳县18682958863: C语言中溢出是什么意思 - ?
歧冰迪巧: 1、溢出:数据类型超过了计算机字长的界限而出现的数据溢出;2、溢出可能原因:当应用程序读取用户数据,复制到应用程序开辟的内存缓冲区中,却无法保证缓冲区的空间足够时 (假设定义数组int Array[10], 而在调用时使用Array[11] 或存放的数据超过int类型容量等), 内存缓冲区就可能会溢出.3、溢出因素分析:由于C/C++语言所固有的缺陷,既不检查数组边界,又不检查类型可靠性,且用C/C++语言开发的程序由于目标代码非常接近机器内核,因而能够直接访问内存和寄存器,只要合理编码,C/C++应用程序在执行效率上必然优于其它高级语言.然而,C/C++语言导致内存溢出问题的可能性也要大许多.
饶阳县18682958863: 初级C语言数据溢出问题!?
歧冰迪巧: printf("请输入第三条边长\n"); scanf("%d",&b); ------b改成c 吧 printf("总和为: %d \n",&sum); -----没有&这个... 应该就不会出现错误了...这不叫溢出...