2 wyb041011 wyb041011 于 2014.07.10 21:33 提问

C语言中,怎么把0写入到字符数组的某一位?

例如,想用一个for循环来初始化一个字符数组,大小100,数组的每一位的元素为其对应的下标,即:
char DataItem08[100];
for( i=0;i<100;i++)
{
DataItem08[i] = i;
}

可以发现sizeof(DataItem08)=0,原因是DataItem[0]=0,表示DataItem数组的第0位存储的是字符串结束符。有没有什么办法使得字符数组的某一位可以存放0?

求大神们赐教,谢谢!

4个回答

MSL918
MSL918   2014.07.13 09:50

可以存放,但是不能使用以0为结束标志的库函数存取,比如printf等

u010136832
u010136832   2014.07.25 08:52

你们两个在逗我,你开始的时候定义的时候就已经确定了数组Dataltem的大小事100 还用算?,你确定你已经在机器上跑过?

thebirdman
thebirdman   2014.08.04 19:57

我用gcc编译sizeof(DataItem08)大小是100,等于数组内存的大小。C 语言以'\0'作为字符串结束符,'0'的ANSCII码是48。如果要使用string.h中的库函数,应该只在字符数组结束存'\0'。

a1193561652
a1193561652   Rxr 2015.05.22 13:56

sizeof(DataItem08)是0?sizeof()是取数组的长度应该是100吧。字符串的长度(以'\0'结尾的)应该用strlen()。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C语言位操作中指定的某一位数置0、置1、取反
C语言位操作中指定的某一位数置0、置1、取反 一、指定的某一位数置1                 宏 #define setbit(x,y)  x|=(1 二、指定的某一位数置0             宏  #define clrbit(x,y)  x&=~(1 三、指定的某一位数取反                宏  #define reversebit(
c语言中如何给字符串数组赋值
c语言中如何给字符串数组赋值 1.问题 这是我写的 struct student { int x; char name[10]; }; void main() { student st; st.name= 这里能不能直接赋值 一个字符串 “123”;? 如果不用scranf() } 2.原因 st.name="123"; 非法,常量字符串不能直接
C语言的字符串数组
在C语言当中,字符串数组可以使用: char a[] [10]; 或者 char *a[]; 表示 第一种表示方式固定了每个字符串的最大大小。第二种没有字符串的大小限制。 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; //该程序的功能是 输入阿拉伯数字的月份数 输出英文月份 int main() { //一个字符串...
c语言中的字符数组和字符串之间的关系
一、字符串的结束标志'\0' 1、很多时候我们都是可以看到相关的内容就是: 使用数组来存储字符串,也就是我们经常会使用到sizeof()和这个函数,而,这个函数只是求出当前该数组的最大容量,而不是数组中实际存放的内容,我们一般都是需要使用'\0'来表示字符串的而结尾,并且没有影响到相应的数组的操作的其他的内容,而是在系统外部自动添加的。这就是操作系统的问题,所以我们是可以使用'\0'来判断字符
【C语言】实现对一个8bit数据的指定位的置0或者置1操作,并保持其他位不变。
C语言
【C语言】编写函数,将一个数的指定位置置0或置1
//编写函数,将一个数的指定位置置0或置1 #include unsigned int set_bit(unsigned int num, int pos, int flag) { int n = 1; n = n << (pos - 1); //将n的第pos位置1,其他全为0 if (flag == 0) { num = num&(~n); } else if (fla
c语言夜未眠4——对某一位或几位进行反转
我的知识来源于书本,工作,互联网,因此,我也应该把我学到的知识分享出来,与志同道合的朋友互相交流。这是我坚持学blog的原因所在。   在写程序的过程中,我们或许会遇到这样的需求,将某一位进行反转,或者是将几位进行反转,比如说,要把‘a’变成‘A’,则需将第6位反转即可(假定低位从1开始算起)。 a的二进制码是1100001,而A的是1000001,现在的问题是如何将某一位进行反转呢?
C语言中常见的置位操作(置0或置1)
如何对某一位置0或者置1? 方法一: 写成宏,方便移植 #define setbit(x,y) x|=(1 #define clrbit(x,y) x&=~(1   方法二: C语言位运算除了可以提高运算效率外,在嵌入式系统的编程中,它的另一个最典型的应用,而且十分广泛地正在被使用着的是位间的与(&)、或(|)、非(~)操作,这跟嵌入式系统的编程特点有很大关系。我们通常要对硬件寄
c语言中左移和右移
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用 int i = 1; i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原
C语言位操作中的置0和置1
C语言中,有时需要进行置位操作,比如针对其中的某些位。这样做的目的是既达到了目标,又不会影响其它位。常用的置位操作如下: #define   setbit(x,y)    x|=(1 #define   clrbit(x,y)     x&=~(1       举个例子: int main(int argc, char* argv[]) {       unsigned c