奇怪的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 编辑 ]