1樓:匿名使用者
鍵盤監聽!就可以了。
c語言為什麼輸入字串回車結束時記憶體出錯
2樓:網友
char *str;宣告瞭乙個char的指標str,但由於在main()函式體內,為自動變數,並未初始返氏化,它的值在第一次被引用時被確定為乙個隨機的位址。這個位址中可能有其它內容,gets對str指向的這個隨機位址進行寫操作,會造成不可預料的後果(例如,可能會導致程式出錯強制退出)。
正確的做法是,給str初始化或賦值,內容為新申請的一型世旅段連續記憶體空間的首位址或確定可被覆蓋的其它記憶體空間(例如之前定義的乙個char陣列卜凳,或其它char*變數正確指向的位址)。
#include
int main()
char *str=malloc(100*sizeof(char));
gets(str);/上面只申請了100個位元組,因此如果輸入的字串長度超過99也會出錯。*/
puts(str);
return 0;
原創團]
c語言中字串是不是不能儲存回車?幫忙看看這段**!
3樓:網友
你這裡是換成13以後得**,你怎麼檢驗回車得?
字元當然能儲存回車。
c語言回車字元
4樓:網友
include
int main(void)
這個就是乙個最簡單的例子。
其實有簡單的方法解決這個問題。
我們n=read(0, buf,1023);這樣我們就能將回車符讀入。
0代表標準輸入,也就是從鍵盤讀取,讀到buf中,最大讀1023個位元組。
然後buf[n-1] = '\0';就可以了。
#include
#include
int main(void)
char ch;
int n;
n = read(0, buf, 1023);
buf[n-1] = '\0';
scanf("%c", &ch);
printf("%s%c", buf, ch);
return 0;}
c語言回車是什麼字元
5樓:網友
1、回車鍵是鍵盤上的乙個按鍵,編碼方式根據不同的系統而不同。在windows環境下,按下回車鍵是兩個字元:回車符('')和換行符('')。在其它作業系統環境下則不一定。
2、回車符 / cr (carriage return) 對應ascii編碼如下:
bin (2進位):0000 1101
dec(10進位):13
hex(16進位):0d
6樓:
在c語言中,回車用表示。
c語言,如何輸入乙個以回車結束的字串??
7樓:
庫函式fgets把''作為結束命令,同時也當作乙個字元儲存到目標空間裡,並在其後加乙個'\0'。所以用fgets接收鍵盤輸入就能方便地達到題面的要求。可用下列**測試:
#include ""//if the vc++,with this line.
#include ""
int main(void)
這裡使用了printf("%s",a);(輸出字串)而非printf("%s",a);(輸出字串加''),卻能達到後者的效果,是因為fgets函式把最後輸入的''作為乙個字元儲存在字串末尾了,在''之後才加乙個'\0',所以這裡的回車是由字串的最後乙個字元''產生的。正好達到題面的要求——「輸入乙個以回車結束的字串」!
c語言中字串和陣列的區別,C語言中字串和陣列的區別
這個是字元陣列。c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以 0 結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束標誌是 0 總的來說是沒有區別的,字串就是以字元陣列形式儲存的。可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。兩...
c語言中如何輸入輸出字串
在c語言中,輸入輸出字串有以下兩種方式 1 用scanf printf輸入輸出。scanf printf是c語言的格式化輸入輸出函式,可以用於輸入輸出各種基礎型別,字串 char 也 其支援範圍內。格式化字元為 s。定義char str 100 輸入scanf s str 輸出printf s st...
C語言中怎麼使輸入的整形資料(比如學號1001)不為其他字元?即只能輸入純數字。。謝謝
這個得自己判斷把,使用者想輸入是控制不了的,可以增加 如果輸入不在你要求的資料範圍內,提示重新輸入。用程式的方法實現麼,可以供你參考一下我寫的程式 char a 定義一個字元變數a來臨時儲存學號的每一個數字 char num n 定義一個陣列用來儲存學號 for i 1 i n i num n a ...