[英]what does 2nd label [1st][2nd] in 2Darray meaning eg .char label[11][6]
[英]2nd char array overwriting 1st char array after fread from file
目標是使用C從文件中讀取數據(可以是文本或二進制),然后附加到現有字符串
我有2個char數組,一個是現有字符串(s1),另一個是字符串(s2),我將緩沖區char數組(buf)附加到
size_t readCounter = 0;
char buf[16];
char s1[] = "hello ";
char s2[] = ""
while (1) {
readCounter = fread(buf, sizeof(char), strlen(buf), fp);
if (readCounter == 0) {
break;
}
strcat(s2, buf);
}
printf("%s", s1);
printf("%s", s2);
問題:
當我打印出s1時,它不再是“ hello”,它包含了文件中的字符,因此出於某種原因,第一個char數組將在內存中被覆蓋。 為什么會這樣? 我該如何解決?
readCounter = fread(buf, sizeof(char), strlen(buf), fp);
這是個問題。 此時, buf
不包含字符串,因此將其傳遞給strlen
是錯誤的。
也:
char s2[] = "";
...
strcat(s2, buf);
不是很好。 當您分配s2
,它指向一個空字符串。 因此,數組的大小可容納一個空字符串。 通過將s2
傳遞給strcat
,您嘗試將其附加到它上-但它沒有任何額外的空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.