在C语言中数组的名字即数2113组的起5261始地址,也是数组第一个元素的地址4102。因此,假设有一1653个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\n", a);就等同于printf("%s\n", &a[0]);输出的时候用:int i = 0;for (i=0; i<10; i++) {printf("a[%d]=%c\n", i, a[i]);}防止缓冲区溢出可以用这样的:fgets(a, sizeof(a), stdin);a[strlen(a) - 1] = '\0';扩展资料:如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。参考资料来源:百度百科-字符数组,printf("%s",s[0]); -- 不加&符号 s[0] 表示2113 整型值,数值等于s[]里第一个字符(你的5261情况是h) 的 ASCII 值,如果4102用%d 格式打印1653,得104,如果用%c 格式打印,得字母h, 用%s打印 得乱码。printf("%d",s[0]); 打出 104 printf("%c",s[0]); 打出 h%s 输出格式,用于字符串,要求给 字符串的首地址,char s[] 的首地址 是 &s[0] 或 s.printf("%s",s); 打出 how are youprintf("%s",&s[0]); 打出 how are youprintf("%s",&s[1]); 打出 ow are youprintf("%s",&s[2]); 打出 w are you....本回答被提问者和网友采纳,在C语言中数组的名字即2113数组的起始地5261址,也是数组第一个元素的地4102址。因此,假1653设有一个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\n", a);它就等同于printf("%s\n", &a[0]);,你前面输出格式为"%s"即字符2113串类型5261,后面对第一个字符s[0]加&表示为取得整个4102字符串的首地址,再1653以字符串的格式肯定读出的是整个字符串,如果你把"%s"改为"%c"把&去掉就会输出首字符,如果只把&去掉,那么你是以字符串的格式输出首字符,格式不对当然是乱码了,记住C语言的NB之处在于2113在处理字符串的时候使5261用一种超乎寻常的思维: 用一地4102址或字符指针就可以代表一字1653符串!当然,想打印一字符串,也通过这种方式就可以获得。为什么呢?因为C语言内部的机制表明: 它对字符串的处理是,遇到'\0',其实也就是0,就表明字符串结束了,所以呢,不论这个指针在什么位置都没关系,编译器会依次向后寻找字符,知道遇到NULL(或0或'\0')就算字符串结束了防采集。
C语言中,用printf()输出数据时,只有字符串类型数据才可以通过数组名(数组首地址)将其中的数据完整的输出出来。因为,字符串有一个规定,必须以\0结尾,这样,程序,只需要判断是不是遇到\0而决定是否结束输出。 可是,对于其它类型的数组,
答:在C语言中数组的名字即数组的起始地址,也是数组第一个元素的地址。因此,假设有一个char类型的数组a表示成如下代码: char a[20]; 那么a表示字符数组的起始地址,它和&a[0]是一个意思。 使用printf()输出字符数组a的内容: printf("%s\n", a); ...
C语言中字符数组与数值数组的类型不同 由于类型不同,所以输入输出时调用的函数有点差异 对于字符数组,输入时可以调用scanf函数以及gets函数,输出时可以调用printf函数以及puts函数 对于数值数组,输入时可调用scanf函数,输出时可调用printf函数
getch()这句多余,只是打印而已不需要这个函数接收字符。 printf("%s\n",&ch[0]); printf("%s\n",&ch[1]); printf("%s\n",&ch[2]); 这3句打印,第2个传参和printf函数形参类型不一致,函数需要的是char *,而你给的是char*[12]。 运行可以,但
答:那当然 %s要的是地址 如果你printf("%s",s); 也是一样的 S是数组的首地址
作为初学者,仅仅为了熟悉编程,程序中接受键盘输入方式很多,一样样来,虽然不建议使用scanf,但是你想用用看,就按你的思路吧,直接帮你转十进制数了,关于单个字符输出,zpl1986 说的很明了了。 一下是转10进制并输出的代码: char a[10] = {0
double占8字节 对应的格式为%lf float占4字节 对应的格式为%f 当两个格式用反时,会造成程序读取数据并赋值时,赋值给变量时字节信息错位,导致数据错误。 float 存储数据格式为:1位的符号位+8位的指数位+23位尾数 double存储数据格式为:1位的
答:#includeint main(){char s[]="Good evening!"; int i; for(i=0;s[i];i++) printf("%c",s[i]); printf("\n"); printf("%s\n",s); puts(s); return 0;}
答:#include int main(void) { int i = 0; char a[20]; while((a[i++]=getchar())!='\n'); a[i]='\0';//加个这个就不会了 这个是字符串的结束标志 printf("%s",a); /*因为如果没有字符串的结束标志这里输出时要输出全部的20个字符 不够20时就输出乱...
答:C语言中,用printf()输出数据时,只有字符串类型数据才可以通过数组名(数组首地址)将其中的数据完整的输出出来。因为,字符串有一个规定,必须以\0结尾,这样,程序,只需要判断是不是遇到\0而决定是否结束输出。 可是,对于其它类型的数组,...
答:C语言中字符数组与数值数组的类型不同 由于类型不同,所以输入输出时调用的函数有点差异 对于字符数组,输入时可以调用scanf函数以及gets函数,输出时可以调用printf函数以及puts函数 对于数值数组,输入时可调用scanf函数,输出时可调用printf函数
答:getch()这句多余,只是打印而已不需要这个函数接收字符。 printf("%s\n",&ch[0]); printf("%s\n",&ch[1]); printf("%s\n",&ch[2]); 这3句打印,第2个传参和printf函数形参类型不一致,函数需要的是char *,而你给的是char*[12]。 运行可以,但...
答:作为初学者,仅仅为了熟悉编程,程序中接受键盘输入方式很多,一样样来,虽然不建议使用scanf,但是你想用用看,就按你的思路吧,直接帮你转十进制数了,关于单个字符输出,zpl1986 说的很明了了。 一下是转10进制并输出的代码: char a[10] = {0...
答:double占8字节 对应的格式为%lf float占4字节 对应的格式为%f 当两个格式用反时,会造成程序读取数据并赋值时,赋值给变量时字节信息错位,导致数据错误。 float 存储数据格式为:1位的符号位+8位的指数位+23位尾数 double存储数据格式为:1位的...
答:咱们分析下: 字符数组中如果保存的是字符串,比如 char tar[20] = "hello"; 要知道字符串默认的是以'\0'结尾的,所以这里隐含的最后还有一个'\0' 而printf("%s", tar); 这个语句,在执行的时候,是从tar指向的字符开始输出,一直输出直到遇到第...
在C语言中数组的名字即数2113组的起始地址,也5261是数组第一个4102元素的地址。因此,1653假设有一个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\n", a);就等同于printf("%s\n", &a[0]);输出的时候用:int i = 0;for (i=0; i<10; i++) {printf("a[%d]=%c\n", i, a[i]);}防止缓冲区溢出可以用这样的:fgets(a, sizeof(a), stdin);a[strlen(a) - 1] = '\0';扩展资料:如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。参考资料来源:百度百科-字符数组,printf("%s",s[0]); -- 不加&符号 s[0] 表示 整型值,数值等5261于s[]里第一个字符(你的情况是4102h) 的 ASCII 值,如果用%d 格式打印1653,得104,如果用%c 格式打印,得字母h, 用%s打印 得乱码。printf("%d",s[0]); 打出 104 printf("%c",s[0]); 打出 h%s 输出格式,用于字符串,要求给 字符串的首地址,char s[] 的首地址 是 &s[0] 或 s.printf("%s",s); 打出 how are youprintf("%s",&s[0]); 打出 how are youprintf("%s",&s[1]); 打出 ow are youprintf("%s",&s[2]); 打出 w are you....本回答被提问者和网友采纳,在C语言中数2113组的名字即数组的起始地址,也是数5261组第一个元素的地址。因此,假设有一4102个char类型的数组a表示成如下代码1653:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\n", a);它就等同于printf("%s\n", &a[0]);,你前面输出格式2113为"%s"即字符串类型,后5261面对第一个字符s[0]加&表示4102为取得整个字符串的1653首地址,再以字符串的格式肯定读出的是整个字符串,如果你把"%s"改为"%c"把&去掉就会输出首字符,如果只把&去掉,那么你是以字符串的格式输出首字符,格式不对当然是乱码了,记住C语言的NB之处2113在于在处理字符串5261的时候使用一种超乎寻4102常的思维: 用一地址或字符指针就可以代1653表一字符串!当然,想打印一字符串,也通过这种方式就可以获得。为什么呢?因为C语言内部的机制表明: 它对字符串的处理是,遇到'\0',其实也就是0,就表明字符串结束了,所以呢,不论这个指针在什么位置都没关系,编译器会依次向后寻找字符,知道遇到NULL(或0或'\0')就算字符串结束了内容来自请勿采集。
声明:本网内容旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。