0
我在寫一個基本的c程序來顯示兩個字符串,一個來自用戶,即「a」,另一個在代碼「b」中定義,但是當我運行代碼下面的字符串「a」被附加到「b」。爲什麼?什麼是該符號在 「A」爲什麼字符串a被附加到此代碼中的字符串b
更新的代碼結束:
#include <stdio.h>
#include <string.h>
int main()
{
char a[ 5 ];
int i=0;
while(i<5)
{
a[i]=getchar();
i++;
}
char b[]={'r','f','s','/0'};
printf("output:-");
printf("\n %s",a);
printf("\n %s",b);
return 0;
控制檯
qwert
output:-qwert$
rfs$qwert$
是有一些特殊的符號,而不是$以上,是什麼呢?
'while(i <6)'在訪問'a [5]'時溢出了'a'緩衝區。 '5'是一個超出界限的指數。而且,C中的字符串需要'\ 0'('NUL')終止。哪個'a'和'b'不是。所以你不能把它們看作字符串(就像'%s'指令所做的那樣)。 – kaylum
我做了以下更改: - 添加'/ 0'作爲b的最後一個元素,while(i <5)。仍然獲得相同的輸出。 – techvigil
請更新您的問題以顯示實際的代碼。避免僅用言語描述代碼,因爲這幾乎總是含糊不清。例如,你或你沒有NUL終止'a'嗎?當它應該是''\ 0''時,你真的以''/ 0'終止嗎?不清楚。因此,請顯示確切的代碼,並且不會有任何疑問。 – kaylum