奇怪的getchar()问题,和赋值错误问题!
程序代码:#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const char *cpy(char character);
int main (void)
{
char first[4]={0};
char second[4]={0};
char third[4]={0};
char fourth[4]={0};
char fifth[4]={0};
char sixth[4]={0};
char seventh[4]={0};
int i,j,k,l,m,n,o;
FILE *fPtr;
fPtr=fopen("data.txt","w");
printf("Enter numbers:\n ?");
strcpy( first,cpy ( getchar() ) );
strcpy( second,cpy ( getchar() ) );
strcpy( third,cpy ( getchar() ) );
strcpy( fourth,cpy ( getchar() ) );
strcpy( fifth,cpy ( getchar() ) );
strcpy( sixth,cpy ( getchar( ) ) );
strcpy( seventh,cpy ( getchar( ) ) );
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
for (k=0;k<3;k++)
{
for (l=0;l<3;l++)
{
for (m=0;m<3;m++)
{
for (n=0;n<3;n++)
{
for (o=0;o<3;o++)
{
fprintf(fPtr,"%c",first[i]);
fprintf(fPtr,"%c",second[j]);
fprintf(fPtr,"%c",third[k]);
fprintf(fPtr,"%c",fourth[l]);
fprintf(fPtr,"%c",fifth[m]);
fprintf(fPtr,"%c",sixth[n]);
fprintf(fPtr,"%c\n",seventh[o]);
// printf( "%c",first[i]);
// printf( "%c",second[j]);
// printf( "%c",third[k]);
// printf( "%c",fourth[l]);
// printf( "%c",fifth[m]);
// printf( "%c",sixth[n]);
// printf( "%c\n",seventh[o]);
}
}
}
}
}
}
}
fclose(fPtr);
return 0;
}
const char *cpy(char charactor)
{
const char two[]="ABC";
const char three[]="DEF";
const char four[]="GHI";
const char five[]="JKL";
const char six[]="MNO";
const char seven[]="PRS";
const char eight[]="TUV";
const char nine[]="WXY";
switch(charactor){
case '2':
return two;
break;
case '3':
return three;
break;
case '4':
return four;
break;
case '5':
return five;
break;
case '6':
return six;
break;
case '7':
return seven;
break;
case '8':
return eight;
break;
case '9':
return nine;
break;
// case '\n':
// case '\t':
// case ' ':
// break;
default:
printf("\nEntre a number between 2 and 9.\n? ");
cpy(getchar());
break;
}
}
--------------------------------
数字 字母 数字 字母
2 ABC 6 MN0
3 DEF 7 PRS
4 GHI 8 TUV
5 JKL 9 WXY
-------------------------------
上面这段程序是输入7位数字,然后排列出7为数字代表可能的字母组合,写入data.txt中。
比如输入 23(为了简化,演示两位) 那么应该显示AD,AE,AF,BD,BE,BF,CD,CE,CF。
现在遇到:
第一个问题:getchar()运行错误,在第一个函数strcpy( first,cpy ( getchar() ) )中正确运行,首先提示输入字符。然而在后续的函数(如strcpy( second,cpy ( getchar() ) ) )中 这是cpy中的getchar()似乎并未运行,因为直接直接显示default的语句。
第二个问题:若输入 2 3 4 5 6 7 8则第二个数组(second)必定赋值错误,若输入 2 4 5 6 7 8 9 则没有这个问题。 本来以为定义错误,但是修改char three[]还是如此。如果把 char three[]定义 移动到 定义最后 册third数组会输出错误。
[ 本帖最后由 oszc 于 2011-6-6 14:59 编辑 ]





