『壹』 這個程序編譯時沒錯 在運行後 會在復制後的字元串後面出現奇怪的圖形 為什麼高手看看
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指向'