‘壹’ 关于c语言字符串数组输入问题
这当然不行啊,char *a[11];表示定义了11个字符型指针,每个指针还没有指向有存储空间的内存地址。
如果想要能运行需要申请内存加上
a[0]=(char*)malloc(100);
‘贰’ c语言中的字符数组的输入
这个关系到内存里面的栈问题。。
当你
char
s[10];
时候,内存会在栈上分配地址,因为要位对齐,分配的是12个字节的,内存,大至如下,其中
C0
FF
12
00
,是上一个栈地址。0012ffc0
CC
CC
CC
CC
CC
烫烫烫.
0012FF79
CC
CC
CC
CC
CC
CC
CC
烫烫烫.
0012FF80
C0
FF
12
00
输入
12
个
时,
C0
就已经
占用了,
会被清为
00
,但是
0012ff00
还是一个可以
使用的栈地址,
当13
个时,
ff
也给占用了。。因此会出现
程序错误,
内存溢出
是要避免的,破坏数据,也会产生错误,
如果,你的程序时
,
int
i[10];
char
s[10];
scanf("%s",s);
printf("%s\n",s);
你再输入
40个也没事,s
会占用i的地址,只要不破坏
栈地址就行了。不过溢出这个
还是要检查的,程序
安全问题
‘叁’ c语言如何输入带字符的数组
设置该数组为字符型。例如:char
a[3][5]。这样做的话数组当中的所有存储的都被处理为字符。所以那个1,2,3之类的都变成字符了。不是数字。
如果想要让1,2,3变成对应的数字,让他们减去字符‘0’即可。
‘肆’ C语言字符数组输入
#include<stdio.h>
intmain()
{
charss[100][100];
chars='1';
intn=0,m=0;
while(s!=' ')
{
s=getchar();
if(s!='')
ss[n][m++]=s;
else
{
ss[n++][m]='