1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
// getchar() putchar() #include <stdio.h> int main(int argc, char const *argv[]) { char a, b; int c, d, e; // getchar()和scanf("%c")效果相同,但更快更简洁 部分区别:1.返回值不同,scanf()返回的是字符数 2.scanf()不读取空格、制表符、换行符 a = getchar(); c = scanf("%c", &b); // putchar()和printf("%c")效果相同,但更快更简洁 部分区别:返回值不同,printf()返回的是字符数 // 输入ab,输出ab1 -- 97 -- 1 d = putchar(a); e = printf("%c", b); printf("%d -- %d -- %d", c, d, e); getchar(); getchar(); return 0; } // 字符函数使用 #include <stdio.h> // 一系列分析字符的函数 默认在/usr/include中 用sublime打开就可以代码提示了 F12可查看函数参数 #include <ctype.h> int main(int argc, char const *argv[]) { char ch; while((ch = getchar()) != '\n') { // 判断ch是否是字母 if(isalpha(ch)) { putchar(ch + 1); } else { putchar(ch); } } // 打印换行字符 putchar(ch); getchar(); return 0; } // EOF(文件结束符)包含在stdio.h中 #include <stdio.h> int main(void) { // ./main.exe < input.data >> out.log // 会一直读input.data文件,写入out.log char c; while((c=getchar()) != EOF) { putchar(c); } return 0; } // EOF getc() #include <stdio.h> // 为了使用exit()方法 #include <stdlib.h> int main(void) { char c; char filename[50]; FILE *fp; printf("please key a filename:"); scanf("%s", filename); fp = fopen(filename, "r"); if (!fp) { printf("filename not exists"); getchar(); getchar(); exit(1); } while( (c = getc(fp)) != EOF) { putchar(c); } printf("\nok"); getchar(); getchar(); return 0; } // getchar()会读取空格、制表符、换行符 #include <stdio.h> void display(char cr, int lines, int width); int main(int argc, char const *argv[]) { char ch; int rows, cols; printf("please key a char and two int \n"); while( (ch = getchar()) != '\n' ) { // 输入两个数字,正常的返回值是2,反之退出 if( scanf("%d %d", &rows, &cols) != 2) { break; } display(ch, rows, cols); // 过滤掉输入1个字符、2个数字后的回车,否则外层循环会读取之,然后直接退出循环 while(getchar() != '\n') { continue; } printf("key another char and two int \n"); printf("key a newline to quit \n"); } printf("BYE\n"); return 0; } void display(char cr, int lines, int width) { int row, col; for (row = 1; row <= lines; row++) { for(col = 1; col <= width; col++) { putchar(cr); } putchar('\n'); } } // & * 符号的使用 #include <stdio.h> void changeNum(int * a, int * b); int main(void) { // a=2 b=&a(将a的地址赋值给b或称将b指向a的地址) c=*b(将b指针指向的值赋值给c) int a=13, b= 14; int * d; //d是指向一个整数变量的指针 char *f; //f是指向一个字符变量的指针 *和变量之间的空格是可选的,其他类型同理 printf("a=%d and b=%d\n", a, b); changeNum(&a, &b); printf("now a=%d and b=%d\n", a, b); getchar(); return 0; } void changeNum(int * a, int * b) { int tmp; tmp = *a; *a = *b; *b = tmp; } |