只要沒啟動看門狗,正常編程就行了,然后就在被調(diào)用函數(shù)里等待按鍵,但是不能用死循環(huán),那就出不來了,可以用while語句,判斷按鍵是否按下,按下帶返回值返回,沒有按鍵繼續(xù)檢測按鍵。
創(chuàng)新互聯(lián)技術(shù)團隊10余年來致力于為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、品牌網(wǎng)站制作、成都營銷網(wǎng)站建設(shè)、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團隊,先后服務(wù)、推廣了成百上千網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。
在main函數(shù)中,
fun(a,?b,?4);
第一個參數(shù)a是字符串常量,其內(nèi)容是不能修改的
而在函數(shù)fun函數(shù)中,
while(a[n]?!=?'\0')
{
for(i?=?n;?a[i]?!=?'\0';?i++)
a[i+1]?=?a[i];????//該語句修改了字符串a(chǎn)的內(nèi)容
}
修改了第一個字符串指針指向的內(nèi)容,因此運行時會出錯
另外fun函數(shù)這么寫可以實現(xiàn)你想要的功能
void?fun(const?char?*a,?char?*b,?int?n){
int?i,?j;
for(i?=?0,?j?=?0;?a[i];?i++){
if(i?==?n)?continue;
b[j++]?=?a[i];
}
b[j]?=?0;
}
這段C語言代碼有三個錯誤:
一、switch單詞拼寫錯誤少了c;
二、if(k = 'V')判斷是雙等于號==;
三、main函數(shù)最好沒有返回值,這不是大錯。
因為前面輸入數(shù)字時,最后總要按下回車鍵,這就輸入了一個回車符,而后面的getchar()會讀取這個字符,而不等待從鍵盤輸入(因為緩沖區(qū)不為空),修改如下:
#include stdio.h
#include stdlib.h
int main()
{
int data[7000]={1,1,0},num,digit=1,i,j,k;
FILE *fp;
char fname[50];
printf("\t階乘計算器\n\t請輸入:");
scanf("%d",num);
for(i=1;i=num;i++)
{
if(i%20==0)
{
printf("\n\t當(dāng)前計算到%10d 的階乘?。?!........\n",i);
}
for(j=1;j=digit;j++)
{
data[j]*=i;
}
for(j=1;j=digit;j++)
{
if(data[j]9)
{
for(k=1;k=digit;k++)
{
if(data[digit]9)
{
digit++;
}
data[k+1]+=data[k]/10;
data[k]%=10;
}
}
}
}
printf("\n\n\n\t%d!=\n",num);
for(j=digit;j0;j--)
{
printf("%d",data[j]);
}
printf("\n\n\t%d!共有%d位......\n\n\n",num,digit);
printf("是否保存文件?(y\\n)");
fflush(stdin);/************注意這里,刷新緩沖區(qū),避免前面輸入數(shù)字時遺留的回車符影響這里的讀取******/
if(tolower(getchar())=='y')
{
printf("請輸入文件名:");
gets(fname);
if((fp=fopen(fname,"w"))==NULL)
{
printf("打開文件%s失敗",fname);
exit(0);
}
fprintf(fp,"\t%d!=\n",num);
for(j=digit;j0;j--)
{
fprintf(fp,"%d",data[j]);
}
fprintf(fp,"\n%d!有%d位......\n\n\n",num,digit);
fclose(fp);
}
return 0;
}