C++运行C程序 输入字符串 长于已定义的字符数组长度,PRINTF以后还是能输出所有的字符,这是为什么???

C++运行C程序 输入字符串 长于已定义的字符数组长度,PRINTF以后还是能输出所有的字符,这是为什么???、

这是因为内存读取造成的,比如char num[4]; 你输入google ,cout输出是一直到'\0'结束的, google字符串存储在一段连续的内存上的,她在读取到goog时没有找到'\0',所以会随着g的地址再加上1个字符的长度1,一直读下去,知道结束,。。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-19
printf从你给的字符串起始地址开始输出,直到遇到\0为止结束,因此即使你输入的字符串超标了,但系统还没找到\0,它就会继续找下去直到遇到\0为止。而不是到达字符数组的长度就停止了的。
第2个回答  2010-12-19
因为定义的字符数组长度,当输入的字符串长度小于定义时,未占有的空间用\n来填充,如果输入的字符串刚好或超过时,则按输入时那样也就是原样输出!

C++运行C程序 输入字符串 长于已定义的字符数组长度,PRINTF以后还是能输 ...
这是因为内存读取造成的,比如char num[4]; 你输入google ,cout输出是一直到'\\0'结束的, google字符串存储在一段连续的内存上的,她在读取到goog时没有找到'\\0',所以会随着g的地址再加上1个字符的长度1,一直读下去,知道结束,。。

C++ 为什么输出字符串指针的结果是输出了字符串内容?
这是重载后功能就是这样,如果是char*就输出直到字符结束符的所有字符。如果是int *就是输出地址。另外整数也办法向字符一样有结束符可以判断,一般数字数组得有另一个参数size表示其数组大小。

c++从键盘输入一串字符输出其中所有的字母
C++实现如下:include<iostream.h>#include<string.h>#define N 1000void main(){int i,len;char s[N];cin>>s;\/\/输入一段字符串。len=strlen(s);for(i=0;i<len;i++)if (((s[i]>='A')&&(s[i]<='Z'))||((s[i]>='a')&&(s[i]<='z'))) cout<<s[i];\/*找出字符...

...一个字符串的长度,在main函数中输入字符串,并输出其长度。
char* p = str;printf("请输入str\\n");for (int i = 0, ch = '\\0';ch != '\\n'; ++i) { ch = getchar();if (i >= N) {\/\/当超出字符串长度时, 继续接受键盘输入的字符,直到输入\\n为止 \/这是为了防止字符串输入完成后输入的字符会被下一个需要输入的数据接收 continue;} if...

C\/C++字符串初始化定义的一点疑惑
赋值的字符串长度少于定义的长度时,行为应该是未定义的。比如下面的程序,当输出语句中下标不是0的时候,会影响c的输出。int main(){char s[5] = "h";char c = 'a';printf("%c %c",s[0],c);return 0;}

如何用devC++编程实现输入字符串?
1、首先我们新建一个dev C++的项目。2、接下来在项目中新建C语言程序文件。3、然后在C语言文件中声明一个字节数组。4、接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。5、接着在通过printf函数输出用户输入的内容。6、最后运行C语言程序,我们输入内容以后就可以输出了。在C...

C语言C++程序编写要求键盘输入一串字符,然后剔除其中一个字符,再输出剩...
include <stdio.h> int main(){ char A[100];scanf("%s",A);printf("\\n");for (int i=0;A[i] != '\\0';i++){ for (int j=0;A[j]!='\\0';j++){ if (j == i)continue;printf("%c",A[j]);} printf("\\n");} return 0;} 截图如下:...

C++ 输入字符串,然后输出字符串的所有组合,如输入:abc 输出:a,b,c...
不是错误 只是提醒你字符串不能修改 还有头文件没包含全 include<iostream>#include<cstring>#include<cstdio>#include<vector>using namespace std;void Combination(const char* string, int number, vector<char>& result)\/\/const{ if(number == 0) { vector<char>::iterator iter = r...

C语言求字符串长度的问题
如果你是只想求出输入的字符串的长度而不要求保存输入的字符串,下面的代码更好。你的标准输入缓冲区有多大,那么它就可以求出多长的字符串的长度,不会有越界。include<stdio.h> int main(){ int len=0;\/\/getchar()函数从标准输入设备(即键盘)接收一个字符,返回该字符的ASCII码.因为回车被输入...

C\/C++ 语言字符数组和字符串数组的疑惑
char str[5] = {'a', 'b', 'c', 'd', 'e'};这是定义了一个字符数组,不是字符串,导致这个数组不会自动以'\\0'结束,printf中的%c表明后面格式化的是一个字符,所以运行正常 而对于最后一个printf("%c", &str[1]),str[1]是字符数组中的第一个元素,&str[1]是第一个元素的地址...

相似回答