scanfの入力文字時のトラップ


 
 
//       :scanf("%c", &ch)   ch = getchar()
//  %c        
//int :  
#include <stdio.h>
int main()
{
    int i;
    int var1, var2;
    for(i=0 ; i<10; i++)
    {
        scanf("%d%d",&var1, &var2);
        printf("i = %d
", i); } return 0; } //char : #include <stdio.h> int main() { int i; char var1, var2; for(i=0 ; i<6; i++) { scanf("%c%c",&var1, &var2); //scanf("%c %c",&var1, &var2); printf("var1 = %d, var2 = %d
", var1, var2); printf("i = %d
", i); } return 0; } /* : a b var1 = 97, var2 = 98 i = 0 c d var1 = 10, var2 = 99 i = 1 var1 = 32, var2 = 100 i = 2 e f var1 = 10, var2 = 101 i = 3 var1 = 32, var2 = 102 i = 4 g h var1 = 10, var2 = 103 i = 5 : a b var1 = 97, var2 = 32 i = 0 var1 = 98, var2 = 10 i = 1 c d var1 = 99, var2 = 32 i = 2 var1 = 100, var2 = 10 i = 3 e f var1 = 101, var2 = 32 i = 4 var1 = 102, var2 = 10 i = 5 */ //char : #include <stdio.h> int main() { int i; char var1, var2; for(i=0 ; i<6; i++) { scanf("%c%*c%c", &var1, &var2);// 、Tab getchar();// '
' printf("var1 = %d, var2 = %d
", var1, var2); printf("i = %d
", i); } return 0; } // , ①②③④ #include <stdio.h> #define MAX_VERTEX_NUM 20 #define INFINITY 0x00ffffff typedef char VertexDataType;// typedef char *OtherInfo;// enum GraphKind{DG,DN,UDG,UDN};//directed graph,directed net,undirected graph,undirected net typedef struct { int edge;// ,1、0 ; , OtherInfo info; }ArcNode;// typedef struct { int verNum;//vertex number int arcNum;//arc number VertexDataType verList[MAX_VERTEX_NUM];// ArcNode arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; enum GraphKind kind; }AdjMatrix;//adjacency matrix( ) void createDN(AdjMatrix *G); // int main(void) { AdjMatrix G; createDN(&G); printf("create successfully!
"); return 0; } //locate the index of the vertex int locateVer(AdjMatrix *G, const VertexDataType *ver) { int i; for(i = 0; i < G->verNum; i++) { if(G->verList[i] == *ver) { break; } } return i; } //create directed net void createDN(AdjMatrix *G) { int i, j; VertexDataType v1, v2; int weight; printf(" 、 :"); scanf("%d%d", &(G->verNum), &(G->arcNum)); getchar();//① printf(" :"); for(i = 0; i < G->verNum; i++) { scanf("%c", G->verList+i); getchar();//② } for(i = 0; i < G->verNum; i++) { printf("%d ", G->verList[i]); } printf("
"); // for(i = 0; i < G->verNum; i++) { for(j = 0; j < G->verNum; j++) { G->arc[i][j].edge = INFINITY; G->arc[i][j].info = NULL; } } // printf(" 、 、 :
"); for(i = 0; i < G->arcNum; i++) { scanf("%c%*c%c%d", &v1, &v2, &weight);//③(%*c ) getchar();//④ printf("i = %d
", i); int temp1 = locateVer(G, &v1);// int temp2 = locateVer(G, &v2); G->arc[temp1][temp2].edge = weight; printf("output:%c %c %d
", G->verList[temp1], G->verList[temp2], G->arc[temp1][temp2].edge); } G->kind = DN; } /* test data and result 、 :6 10 :a b c d e f 、 、 : a b 5 a c 4 a d 1 b d 6 b e 3 c d 7 c f 6 d e 5 d f 2 e f 5 */