我正在寫一個讀取字符列表(使用重定向)的代碼,但是我將字符存儲的字符串的大小爲41.字符數不會接近數組的大小,因此我需要使用malloc()以獲得確切的數組大小。當我不使用malloc函數打印數組時,打印符號和其他亂碼以及字符串。我需要malloc的字符串,所以符號和胡言亂語不會被包括在內。如何將malloc()函數用於char字符串/數組?
代碼:
#include <stdio.h>
#include <stdlib.h>
int main() {
char c;
char r1[41];
int a = 0;
while(scanf("%c", &c) != EOF) {
if(c >= 'A' && c <= 'Z' || c == '[' || c == '.' || c == '!') {
r1[a] = c;
a++;
}
}
printf("\nThe string is: %s\n", r1);
return 0;
}
輸出:
The string is TR[!.DFQ▒ ▒ ▒ 這
'NUL'終止符... – 2013-11-20 21:21:10
您的'string'是一個42個指向'char'的數組。你想'字符串[40 + 1];'。 (當然,您需要在其中存儲一些值。) –
該代碼中沒有任何內容從任何地方讀取任何值。因此,你的'string'數組的內容未初始化,這導致了未定義的行爲...... – twalberg