c语言中字符数组与数值型数组在输入输出时有什么区别

作者&投稿:燕侍 (若有异议请与网页底部的电邮联系)
请问大神c语言中字符数组的输入输出到底怎么弄的呢?~

字符数组的输入输出可以有两种方法:
逐个字符输入输出(%c)
整个字符串一次输入输出(%s)
输出的字符中不包括结束符’\0’
用%s输出字符串时,printf函数中的输出项是字符数组名,不是数组元素名

如果一个字符数组中包含多个’\0’,则遇第一个’\0’时输出就结束
可以用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 are you?

How\0\0 str1

are\0\0 str2

you?\0 str3
如果输出st1
printf("%s",str1);
输出:How.因为w后面的\0。所以系统读到这就会结束了。

我认为:char a [11] = "I love you"; // 注意\0
编译器将string放在栈中。 a是一个地址常量,它指向string的第一个字节。
char * b = "I miss you";
在栈中分配一个指针(一个指针在栈中被分配4个字节),在堆中分配一个string,将指针指向string。
补充:一个string,在内存中存放的时候,编译器会默认加上'\0',当作字符串的结束标志。
回答完毕,求采纳。

以\0结束的字符数组是字符串,输出的时候可以用%s控制输出,别的基本一直,字符数组的每一个字符char类型可以看作小的整型,输入都只能逐个输入,赋值的话字符数组可以用双引号类的一段内容来复制如char a[]="hello,worle!";系统会自动在字符数组末尾添加一个‘\0',表示字符串,数值型数组只能 {12,32,21……}这样

  1. C语言中字符数组与数值数组的类型不同

  2. 由于类型不同,所以输入输出时调用的函数有点差异

  3. 对于字符数组,输入时可以调用scanf函数以及gets函数,输出时可以调用printf函数以及puts函数

  4. 对于数值数组,输入时可调用scanf函数,输出时可调用printf函数



输入时候都一样
char a[10]; 定义字符数组
int b[10], i; 定义数字数组
for (i=0, i < 10; I++)
{
scanf("%c,%d", &a[i], &b[i]); 其中%c 代表输入 字符, %d代表输入整形数字。
}
for (i=0, i < 10; I++)
{
printf("%c,%d", a[i], b[i]);与输入一样,要一一对应。
}
定义字符数组,数字字符,要分开;输入字符,数字要循环,i = 0开始循环,知道i = 9,结果就是a[0], a[1], a[2] ,a[3].......a[9], 因为数组都是从a[0] 开始,下标一次增加。

格式输出不同;
printf("%d",p);整型数组输出
printf("%s",p1);----字符数组输出
或者printf("%d,%c", p, p1);

getchar() or gets () putchar() or puts()


C语言编程:编写函数,统计字符串中字母、数字、空格和其他字符的个数...
int ZiMu=0,KongGe=0,ShuZi=0,QiTa=0,i;for(i=0;s!='\\0';i++){ if(s==32)KongGe++;else if((s>=48)&&(s<=57))ShuZi++;else if(((s>=97)&&(s<=122))||((s>=65)&&(s<=90)))ZiMu++;else QiTa++;} printf("空格:%d;数字:%d;字母:%d;其他:%d。\\n",Kong...

C语言中整型数组和字符数组有区别么
区别在于,对字符的操作与数值不同,字符数组可以当作字符串来对待(当然,作为字符串,要注意字符串的结束符号)字符数组也可以当作整型数组使用,只是表达的范围比较小而已。总得来说,字符数组可以作为字符串来操作,这个用途比较大。如果抛开这个不说,那么字符数组,整数数组、实数数组除了表达范围不同外...

关于C语言字符数组的问题
字符 初始化数组时,应加上 花括号{};即 a[2][3]={'a','b'};如果使用 字符串 初始化数组,则可以不加 花括号,如:a[2][3]="ab";至于B 为什么对呢?① B 项的名称定义符合变量命名要求(字母和下划线开头,由字母、数字、下划线任意组合而成);② B 项的数组定义符合C语言要求,即...

c语言中,将整数值赋值给字符数组的问题
include<stdio.h> void main(){ int a=10;char t[3];t[0]=a\/10+48;t[1]=a%10+48;t[2]='\\0';printf("输出t【3】的值:");printf("%s\\n",t);} 我指一下你的错误:1 对字符数组定义的时候出错,出现了反复定义 2 对数字 比如数字A 要把它转换成字符A 必须加上48,将...

C语言中如何判断字符串数组与规定的数组相同
用strcmp函数就可以 如果返回0就是相同。include <stdio.h>#include <string.h>\/\/增加字符串头文件。 int main(void){int i;char s[3][128];for (i = 0; i < 3; i++) {printf("s[%d] : ", i);scanf("%s", s[i]); \/\/比如在这里,如果输入的是$$$,就跳出循环if(strcmp(s...

c语言字符数组中某字符串的数目
include <stdio.h>#include<string.h>void main(){char s[200];int i = 0;for (;( s[i] = getchar()) != '\\n'; i++);s[i] = 0;char s2[] = "yes";int len = strlen(s2);int count = 0;int y = 0;i = 0;while (s[i]){y = 1;for (int j = 0; j < ...

c语言 关于字符数组和整型数组清零
C语言数组和整型数组清空方法,示例:1、整数数组清零 函数:void bzero(void *s, int n)头文件: #include <string.h> 功能说明:将字符串s的前n个字符置为0,一般n取sizeof(s),将整块空间清零;举例:char str[10]; bzero(str, sizeof(str)); 也可以将整个结构体清零;2、数组...

用C语言,输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的...
3、输入字符:printf("please input some characters\\n");while ((c = getchar()) != '\\n')\/*当输入的不是回车时执行while循环体部分*\/。4、判断是否是英文字母: if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')letters++; \/*当输入的是英文字母时变量letters加...

输入数组中的数是要用&吗?
逐个输入数组中的数,是要用&的,但是如果是字符数组,以字符串形式整体输入,就不用,示例:include<stdio.h>int main(){int n;int t=0;scanf(“%d”,&n);char arr[n];int i;for(i=0;i<n;i++){scanf(“%c”,&arr[i]);}printf(“%c\\n”,arr[0]);for(i=...

C语言中字符数组和一般的字符串如何进行比较?
2 不带\\0结束的字符数组。对于此类数组,没有库函数可供使用,只能自己写函数进行比较。规则可以仿照strcmp的规则。由于没有\\0作为结束,所以参数中必须传入每个数组的元素个数。int char_array_cmp(char *s1, int l1, char *s2, int l2){ int lmin = l1>l2? l2:l1; \/\/较小长度者。

澳门特别行政区19162039126: c语言中字符数组与数值型数组在输入输出时有什么区别 -
掌码罗通: 1. C语言中字符数组与数值数组的类型不同 2. 由于类型不同,所以输入输出时调用的函数有点差异 3. 对于字符数组,输入时可以调用scanf函数以及gets函数,输出时可以调用printf函数以及puts函数 4. 对于数值数组,输入时可调用scanf函数,输出时可调用printf函数

澳门特别行政区19162039126: c语言中字符数组在使用规则与数值型数组有哪些不同之处? -
掌码罗通: 它在本质上没有区别 因为字符在机器中也是用ASCII码表示(也是整数) 但是如果字符数组的某个单元存的是数值0(即'\0'),可以把这个数组看成一个字符串,字符串内容就是0之前的内容,0就是字符串结束标志 例如数组int a[3]; a[0] = 'a'; a[1] = 'b'; a[2] = 0; printf("%s",a); 就能打印出ab

澳门特别行政区19162039126: 字符数组的输入与输出 c语言 -
掌码罗通: char x[100][8]; 你这里定义的一个字符数组长度为 8 ,而你2113的 输入 20000001长度为 8,那么那个结束符 '\0' 就没地儿存放了,也就是说你的 x[0] 的后面是没有 \0 的,5261直接就是存储 x[1] 了,那么你在输出的时候,输出 x[0] ,在 x[0] 的后面没有找到 \0 ,它会继续找,一4102直到你输入的最后一个字符数组后,哪里有1653个 回车 存在内存里了,结束,也就是 x[0] 输出的是内你输入的全部字符,x[1] 输出的是你的除了 x[0] 之后的所有字符.你要输入的是 20000001,那么容你的字符数组长度应定义为 9个长度,即 char x[100][9];

澳门特别行政区19162039126: c语言中的字符数组的输入 -
掌码罗通: 这个关系到内存里面的栈问题..当你 char s[10]; 时候,内存会在栈上分配地址,因为要位对齐,分配的是12个字节的,内存,大至如下,其中 C0 FF 12 00 ,是上一个栈地址.0012ffc0CC CC CC CC CC 烫烫烫. 0012FF79 CC CC CC ...

澳门特别行政区19162039126: c语言如何输入带字符的数组 -
掌码罗通: 设置该数组为字符型.例如:char a[3][5].这样做的话数组当中的所有存储的都被处理为字符.所以那个1,2,3之类的都变成字符了.不是数字.如果想要让1,2,3变成对应的数字,让他们减去字符'0'即可.

澳门特别行政区19162039126: C语言给字符型数组录入数据 -
掌码罗通: #include<stdio.h> main() { char n[5]; int i,j,m; int a,b; scanf("%d",&a); i=0; m=0; while(1) //while中有break 条件,你就不用在while中加条件了. { b=a; n[i]=a%10; a=a/10; m++; i++; if(a==b) break; } for(j=0;j<=m-1;j++)//修改成for(j=0;j<=m;j++) printf("%c",n[j]); printf("\n"); }

澳门特别行政区19162039126: c语言中函数里面怎么输入字符串数组 -
掌码罗通: 在C语言中,字符串是以字符数组方式保存的,于是字符串数组可以用二维字符数组存储. 输入时,每次输入字符串数组的一个元素(一行),根据需要,使用scanf或gets进行输入. 如: char str[10][100]; //定义字符串数组,供10行,每行最多100个字节数据. int i;for(i = 0; i < 10; i ++)scanf("%s",str[i]);//输入10行字符串数据.

澳门特别行政区19162039126: 字符输入,输出 .数组.在c语言中所表达的意思 含义 -
掌码罗通: 字符的输入:从键盘输入的字符 字符的输出:经过处理后的字符显示在屏幕上 数组:相同数据类型的多个元素

澳门特别行政区19162039126: c语言结构体中的一个char数组怎么赋值? -
掌码罗通: (1)用字符常量逐个初始化数组.例如:char a[8]={'i','l','o','v','e','y','o','u'};把8个字符依次分别赋给c[0]~c[7]这8个元素.如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的.如果花括号中提供的初值个数(即字符个数)大于数...

澳门特别行政区19162039126: 字符数组的输入与输出 c语言 求解答 -
掌码罗通: 因为字符串必须保存一个结为符'\0';所以字符串数组长度必须比字符串符号的长度大一,你char x[100][8];改为char x[100][9];就输出正确了.

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