wow7jiao 发表于 2018-6-8 13:26:35

请前辈指点 char c[10] = "";

请问c字符串每个都是赋值'\0'吗?

ba21 发表于 2018-6-8 13:26:36

本帖最后由 ba21 于 2018-6-8 13:44 编辑

(1)
char str="";

(2)
char str={'\0'};

(3)
char str;
str='\0';

第(1)(2)种方式是将str数组的所有元素都初始化为'\0',而第(3)种方式是只将str数组的第一个元素初始化为'\0'。如果数组的size非常大,那么前两种方式将会造成很大的开销。

只能全部初始化 \0
如果char str="b"; 意思是第0个元数 初始化 为 b ,其它的 填 '\0'

这些课上都讲得很清楚


理想小青年 发表于 2018-6-8 13:34:39

{:10_256:}没懂啥意思,你可以这样理解
char c[ ]={ 'I', ' ','a','m', ' ','h','a','p','p','y','\0' };
'\0'也是00000000,前面的转义符\的意思说这个不是0,是空字符
只不过最后'\0'字符串结束标志给自动补上了

BngThea 发表于 2018-6-8 13:35:23

不是,是第一个字符赋值为 '\0'

wow7jiao 发表于 2018-6-8 14:23:25

BngThea 发表于 2018-6-8 13:35
不是,是第一个字符赋值为 '\0'

#include <stdio.h>
#include <string.h>

#define NUM 128

int main()
{
      int ch, i, j = 0, max = 0;
      int input_num = 0;
      int ascii = {0};
      char count = "";

      printf("请输入英文文本:");

      while ((ch = getchar()) != '\n')
      {
                ascii++; // 字符对应的ASCII码加1
                input_num++;
      }

      for (i = 0; i < NUM; i++)
      {
                if (ascii)
                {
                        count = i;
                        if (ascii > ascii)
                        {
                              max = i;
                        }
                }
      }

      printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
      printf("它们是:%s\n", count);//这个字符串没有'\0'结束,上面声明char count = "";
      printf("出现次数最多的字符是\'%c\',它总共出现了%d次。\n", max, ascii);

      return 0;
}
页: [1]
查看完整版本: 请前辈指点 char c[10] = "";