jialouluos 发表于 2020-10-18 23:00:55

关于数组的基础问题

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

int main()
{
       char str   ;

      strncat(str,"zheyoushiyigewenti",sizeof(str));
      printf("%d\n",sizeof(str));
      printf("%c \n",str);
      printf("%s",str);

      return 0;
}
ps 为什么sizeof的数值为10 不应该是11吗 (不是还有一个'\0'吗)
为什么str【0】会这样(第三个打印也出现了这个东西)
还有就是不是只指定了10个吗 为什么可以全部打印出来。。。。

各位大佬救救萌新吧 qaq

jialouluos 发表于 2020-10-18 23:04:07

最后一点说错了 是打印了11个字符 然后就结束了

风过无痕1989 发表于 2020-10-18 23:12:34

jialouluos 发表于 2020-10-18 23:04
最后一点说错了 是打印了11个字符 然后就结束了

你的数组只有10个元素,\'0' 是结束标志,不会被输出的
%c 输出单个字符(第一个字符)
%s 输出字符串,所以就将字符数组的元素输出出来了

川建军 发表于 2020-10-18 23:13:14

char str就已经确定是10个了呢

jialouluos 发表于 2020-10-18 23:23:57

风过无痕1989 发表于 2020-10-18 23:12
你的数组只有10个元素,\'0' 是结束标志,不会被输出的
%c 输出单个字符(第一个字符)
%s 输出字符串, ...

%c输出的那个不应该对应的是str【0】对应的z吗 我输出的是5,不懂怎么回事。。。

风过无痕1989 发表于 2020-10-18 23:40:57

jialouluos 发表于 2020-10-18 23:23
%c输出的那个不应该对应的是str【0】对应的z吗 我输出的是5,不懂怎么回事。。。

不会吧?{:5_98:}

风过无痕1989 发表于 2020-10-18 23:50:10

jialouluos 发表于 2020-10-18 23:23
%c输出的那个不应该对应的是str【0】对应的z吗 我输出的是5,不懂怎么回事。。。

你一个一个地试,分另改成:str、str、str、str、str、str、str、str、str 输出试试看,是不是对应输出 h、e、y、o、u、s、h、i、y、i

川建军 发表于 2020-10-19 00:24:21

#include <iostream>
#include <cstring>

int main(void)
{
      char str;
      strncat(str, "Helloworld", 10);
      cout << str;
      return 0;
}

返回Helloworld%
最后的那个字符就是所谓的\0

jialouluos 发表于 2020-10-19 16:59:27

已经自己解决了 谢谢大家了 嘿嘿
页: [1]
查看完整版本: 关于数组的基础问题