#include <stdio.h>
int input(char *s, int n){
char c;
int i = 0;
while((c = getchar()) != '\n' && i < n){
s[i ] = c; // assigns s[i] then does i
}
s[i]= '\0';
return i;
}
int main() {
char array[10];
input(array, 10);
printf("%s", array);
}
我已經撰寫了這段代碼,但它不起作用。
當我輸入某些內容時,它會崩潰并且我的 shell 中止。為什么是這樣?
uj5u.com熱心網友回復:
s[i]= '\0';
當您輸入超過 9 個字符時,這將超出范圍訪問陣列。
為了防止這種讀取最大n-1字符。
while((c = getchar()) != '\n' && i < n-1){
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/512692.html
標籤:数组C指针
上一篇:Haskell:如何使用System.Process從標準輸出接收資料/將資料發送到另一個程式的標準輸入?
下一篇:Realloc不復制舊值
