关于数组的基础问题
#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
最后一点说错了 是打印了11个字符 然后就结束了 jialouluos 发表于 2020-10-18 23:04
最后一点说错了 是打印了11个字符 然后就结束了
你的数组只有10个元素,\'0' 是结束标志,不会被输出的
%c 输出单个字符(第一个字符)
%s 输出字符串,所以就将字符数组的元素输出出来了 char str就已经确定是10个了呢 风过无痕1989 发表于 2020-10-18 23:12
你的数组只有10个元素,\'0' 是结束标志,不会被输出的
%c 输出单个字符(第一个字符)
%s 输出字符串, ...
%c输出的那个不应该对应的是str【0】对应的z吗 我输出的是5,不懂怎么回事。。。 jialouluos 发表于 2020-10-18 23:23
%c输出的那个不应该对应的是str【0】对应的z吗 我输出的是5,不懂怎么回事。。。
不会吧?{:5_98:} 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 #include <iostream>
#include <cstring>
int main(void)
{
char str;
strncat(str, "Helloworld", 10);
cout << str;
return 0;
}
返回Helloworld%
最后的那个字符就是所谓的\0 已经自己解决了 谢谢大家了 嘿嘿
页:
[1]