关于C语言字符数组输出问题,在printf输出时,二维数组时,%c格式时不用&,为什么%s时要加&。详细如下:

作者&投稿:红娥 (若有异议请与网页底部的电邮联系)
C语言char数组字符串时,为什么在用输出printf时,数组前不加间接寻址符号*~

首先
输出一个字符串是printf(“%s,a);
a是这个字符串的首地址
你把首地址传入函数
他会自动把\0之前的字符都打印出来
*a是这个字符串的第一个字符
你可以用%c打印

  用printf输出字符串是需要s%来实现的,看个笔记记录就明白了
  
  拓展:
%c表示输出一个字符
%s表示输出字符串

错得远了点!

  1. 既没有s这个数组,也没看到声明它是指针,s[0]、&s[0]等从哪里来?

  2. char str[3][5]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}这样定义的str只是个单字节整型二维数组,不得用%s这样的格式化控制符来控制按字符串输出!

  3. &str[2][2]是11那个数的地址,正宗的应该用%p控制输出,用%x、%d也行,但就是不能用%s控制输出,因为%s是用来输出字符串的!

……



明白了明白了


C语言能否对字符型数组进行整体输入、输出?
可以对字符型数组元素进行整体输入、输出。不能对字符型数组进行整体的输入输出。这是概念性的东西,有点不好理解,不必太纠结。我的理解是:输入输出是针对字符数组元素,进行每个元素的输入输出,而不能对字符数组输入输出,而要针对其中的元素一一对应的进行输入输出,之后就完整的得到了一个字符串,所以...

在C语言中如何实现用键盘输入一个字符串,并打印出来?
在C语言中实现用键盘输入一个字符串,并打印出来的解决方法如下:1、首先定义一个字符串数组,如你可以给字符串100个数组空间。如图括号内数字即为你定义的数组大小。2、gets()函数用来获取键盘输入的字符串,括号内的s即为字符串变量。3、接着用puts()函数输出之前我们从键盘读取的字符串。括号内为...

c语言字符串数组怎么输入和输出呢
char str[] = "http:\/\/c.biancheng.net";printf("%s\\n", str); \/\/通过字符串名字输出 printf("%s\\n", "http:\/\/c.biancheng.net"); \/\/直接输出 puts(str); \/\/通过字符串名字输出 puts("http:\/\/c.biancheng.net"); \/\/直接输出 return 0;} 运行结果:http:\/\/c.biancheng....

c语言编程实现字符串数组的输出
1、新建一个 字符串数组的定义与输出项目。2、添加一个 str.c 文件。3、包含stdio.h和stdlib.h头文件。4、输入main函数主体,system()和返回值。5、定义一个字符串变量str。6、使用printf()函数输出字符串变量str。7、运行程序,查看输出结果。

C语言,如何向一个字符数组输入字符,并打印?
int c,i; \/\/c应该改为 char c while((c=getchar())!=EOF) \/\/c是字符变量,EOF是字符串,不能把字符串赋给字符变量 也可以用scanf();输入。不过要求输入的时候字母间不能加空格。例:scanf("%s",s); \/\/s是数组名,s前不必加&,因为数组名就是该数组的首地址。最好的字符串输入...

请问大神c语言中字符数组的输入输出到底怎么弄的呢?
可以用scanf函数输入一个字符串 scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度 char c[6];scanf(”%s”,c); 比如输入China 系统自动在China后面加一个’\\0’char str1[5],str2[5],str3[5];scanf(”%s%s%s”,str1,str2,str3);比如输入:How ...

C语言怎样输入字母?
在 C 语言中,可以使用字符数组来输入字母。以下是一个简单的程序示例,用于提示用户输入“you”,并验证输入是否正确:```c include <stdio.h> include <string.h> int main() { char input[4]; \/\/ 定义一个长度为 4 的字符数组 printf("请输入“you”:");scanf("%s", input); \/\/ ...

c语言中char类型数组的输出问题--输出时为何需要&符?
在C语言中数组的名字即数组的起始地址,也是数组第一个元素的地址。因此,假设有一个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\\n", a);就等同于printf("%s\\n", &a[0]);输出的时候用:i...

c语言中char类型数组的输出问题--输出时为何需要&符?
在C语言中数组的名字即数组的起始地址,也是数组第一个元素的地址。因此,假设有一个char类型的数组a表示成如下代码:char a[20];那么a表示字符数组的起始地址,它和&a[0]是一个意思。使用printf()输出字符数组a的内容:printf("%s\\n", a);它就等同于printf("%s\\n", &a[0]); 本回答由电脑网络分类达人 ...

c语言中输入数组的问题
}}printf(“%d\\n”,t); } 可以观察到,arr[0]并未存入字符,t的数值比预期少1 原因:这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\\n'遗留在了输入缓冲区,而当前的scanf(“%c”,......

东兴市18712372796: 关于C语言字符数组输出问题,在printf输出时,二维数组时,%c格式时不用&,为什么%s时要加&.详细如下: -
毋辰肉蔻: 错得远了点!1. 既没有s这个数组,也没看到声明它是指针,s[0]、&s[0]等从哪里来?2. char str[3][5]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}这样定义的str只是个单字节整型二维数组,不得用%s这样的格式化控制符来控制按字符串输出!3. &str[2][2]是11那个数的地址,正宗的应该用%p控制输出,用%x、%d也行,但就是不能用%s控制输出,因为%s是用来输出字符串的!……

东兴市18712372796: c语言中能不能用printf函数直接输出数组?如printf("%d",a[3][3]); -
毋辰肉蔻: 限制在C语言中,利用printf直接输出数组是不可以的.但是你的做法是可以的.只是问题出在你数组使用越界了. 解释一下: printf不能直接用来输出数组. 例如:1 2 3 4 5 6 7#include<stdio.h> intmain(){ inta[3]={1,2,3}; inti; for(i=0;i<3;i++) ...

东兴市18712372796: C语言编程:sprintf(chr,"%s",a[1]);字符数组输出的问题 -
毋辰肉蔻: 如果你知道位置:sprintf(chr,"%s",a[1]); chr[5]=0; printf("%s\n",chr); 只输出abolg 如果你寻找小括号位置abcdolg(2):int i; for (i=0;iprintf("%s",chr); 只输出abcdolg

东兴市18712372796: C语言中字符串输出的问题..
毋辰肉蔻: 楼上的没有解决问题 楼主的问题主要是puts引起的,puts输出是遇到结束符后才结束的,所以输出的后面会出现乱码的现象(未知字符) 解决这个问题非常简答,就是在c数组转换完毕后添加一个结束符 修改如下: #include<string.h> #include<stdio.h> void main() { int i,l; char ch[10],c[10],*p; gets(ch); l=strlen(ch); puts(ch); p=ch+l-1; for(i=0;i<l;i++) /* 此处i<5改为i<l */ c[i]=*p--; c[i] = '\0'; /* 此处添加结束符 */ puts(c); }

东兴市18712372796: 关于C语言中printf输出字符串的问题! -
毋辰肉蔻: 因为a和b没有字符串的结束符号'\0' 所以"chi"是会输出的,但后面再输出什么,就不得而知了"na"也会输出的,但它后面再输出什么,也不得而知了 你这种输出结果,只是很多中不可预期的输出里面的一种情况而已

东兴市18712372796: C语言字符输出问题 -
毋辰肉蔻: 你好,是这样的,C语言中字符数组相当于字符指针,而字符数组名相当于指针变量名,它代表的是字符串在内存中的首地址,所以char s[10] scanf("%s",s);是不需要加&取地址符的,printf("%s",s) 就可以了. 前面说到数组名代表的是数组的首地址

东兴市18712372796: C语言字符数组的几种输出方式 -
毋辰肉蔻: #include<stdio.h> int 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; }

东兴市18712372796: C语言数组输出问题
毋辰肉蔻: 你这个程序输出可以不用循环,改写如下:#include <stdio.h>main() { int a[2][2]={1,2,3,4}; printf("%3d",a[0][0]); printf("%3d",a[0][1]); printf("\n"); printf("%3d",a[1][0]); printf("%3d",a[1][1]);} 但是如果数据量大的话,应该用循环

东兴市18712372796: C语言,数组的输出问题. -
毋辰肉蔻: 大概你的原意是这样:main() {int i,a[10]; for(i=0;i<=9;i++) { a[i]=i; printf("%d\n",a[i]); } getch(); } 是不是?如果按你的程序分析,是先执行完 for(i=0;i<=9;i++) a[i]=i; 才接着执行 printf("%d\n",a[i]);这行语句,所以并不是输出整个数组,而...

东兴市18712372796: C语言,关于printf()输出字符串(数组)出现乱码的解释,求给个比较专业、略微详细的解释? -
毋辰肉蔻: 这么说吧,方式一和方式二申请的内存都不够.因为a-g共有7个字符、而你只申请了7,导致\0,没有空间.字符串是以\0为结束值、\0是系统自动加在字符串末尾的.也就就是说申请的空间必须要大于字符串的长度.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网