getchar与putchar缓冲区 有下面的语句段: while ((s = getchar()) != '\n'){ putchar(s); putchar("\n"); } 这个while循环是怎么工作的呢? 首先getchar在数据缓冲区里读数据进来,这个读取数据是一个个读的,循环依次判断读进来的字符是不是为换行符,是的话就跳出循环,不是就打印出该字符.其实在getchar读取字符之前,通过键盘输入的字符已经通过stdin流全部存入了缓冲区中,getchar只在用户输入了换行符…
作者:Natasha The Robot,原文链接,原文日期:2016-10-27译者:BigbigChai:校对:walkingway:定稿:CMB Swift 允许我们将原生的字符串直接传递给一个接受 C String(即 char *)的 C API. 比如说,你可以在 Swift 里调用 strlen 函数,如下所示: import Darwin // or Glibc on Linux strlen("Hello ?") // → 10 虽然在 Swift 中,const c…
在做面试100题中第21题时,发现char *astr="abcdefghijk\0";和char astr[]={"abcdefghijk"};有点区别,以前一直以为是一样的,但是在该程序中采用字符串指针运行一直出错.后来在网上查查,果然发现大大的不同. 展示如何出错 分析:当你需要修改字符串时,采用指针指向该字符串编译通过但是运行出错,而采用字符串数组时不会出现这样的问题.我们知道计算机有堆栈空间供编程人员使用,第一行,astr为栈上分配的一个指针,而右边在堆上…
一. 数组的定义 1.  数组初始化 初始化方式 int a[3] = {10, 9, 6}; int a[3] = {10,9}; int a[] = {11, 7, 6}; int a[4] = {[1]=11,[0] = 7}; 2.   内存分析 数组存储空间的大小 存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的) 数组名的作用,查看元素地址 数组越界的注意 3.      其他使用 数组与函数参数 数组元素作为函数参数 数组作为函数参数(siz…
一.数组 (一)数组 概念:用来存储一组数据的构造数据类型 特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素. (二)数组的定义 格式: 类型 数组名[元素个数]: 举例:存储5个人的年龄 int agrs[5];  // 在内存中开辟4x5=20个字节的存储空间 可以在定义数组的同时对数组进行初始化: int ages[5] = {17,18,19,20,21}: 遍历数组: for(int i = 0;i<5;i++) { printf(“ages[%…
#include<stdio.h> #include<string.h> int main() { ] = "abcd"; //常指针a指向字符串常量"abcd"的首地址,a不能被改变(不可作为左值被重新赋值) char *f = "abcd"; //f指向"abcd",上面a和这个f除了a是常指针之外没有区别,f可以作为左值 ] = "safajshjf"; //常指针b指向&qu…
字符串指针和字符串数组使用区别 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 5 int main(void) 6 { 7 char str1[]="this is str1!"; 8 puts(str1); 9 10 strcpy(str1,"new str1"); 11 puts(str1); 12 13 char *subStr=str1…
char s[] = "wangshihui"; char *s = "wangshihui"; 皆宣告了s字符串,在C-style string的函数皆可使用,但两者背后意义却不相同. char s[] = "wangshihui";   s指向栈内存 的s是个char array,含11个byte(包含结尾\0),"wangshihui"对s来说是initializer,将字符一个一个地copy进s阵列. char *s …
1.getchar: 原型为int getchar(void). 它从stdin里读取一个字符.返回值为用户输入的ASCⅡ码,出错返回-1. eg:c=getchar(). 2.putchar: 原型为unsigned int putchar(char). 在stdout上输出一个字符.当输出正确的时候,返回输出字符转换为的unsigned int 值:当输出错误的时候,返回 EOF(End of file)文件结束符,即-1. eg:putchar(c). 3.gets: 原型为char* g…
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符.getchar带有显示.与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上.但只有第一个字符作为函数的返回值.#include<stdio.h>#include<con…