‘壹’ 这个程序编译时没错 在运行后 会在复制后的字符串后面出现奇怪的图形 为什么高手看看
char* p;
scanf("%s",p);//p是指针,如果要存放字符的话,需要先分配空间给它...修改如下:
#include <stdio.h>
#include<stdlib.h>
int main(void)
{
char* p;
p=(char *)malloc(sizeof(char));
scanf("%s",p); // o: abc , x: abcd ???
printf("\n %s",p);
free(p);//记得释放内存,(*^__^*) 嘻嘻……
return 0;
};
‘贰’ 字符串应该用equals,但是用==,编译的时候为什么没有显示出错
对于字符串来说==比较的是两个字符串的内存地址是否一样,equals比较的是两个字符串的内容是否相同。所以用==不会报错,但是会返回false。
‘叁’ 执行下列C++程序之后,为什么会出现一大串字符"烫"呢怎么解决这个问题
你好,在C或者C++编译器中,字符串是以'\0'结尾,比如输出字符串到控制台时,会从字符指针指向的第一个字符开始,一直输出知道遇到'\0'字符。
这里,在输出zi数组时,zi数组里没有'\0'字符,因此,输出会超出zi数组大小,直到遇到'\0'字符,当然,超出部分都是一些原始内存,即我们看到的“烫”。
建议你在初始化zi数组前,将数组所有元素置为'\0',这样基本可以保证不会出现乱码。
‘肆’ c语言数据输出中为什么会后面多出字符串
C语言字符串类型为char *或char []
两者本质上是一样的
例如:
char*x="abc";
x指向'a'
x+1指向'b'
x+2指向'c'
x+3指向'