簡體   English   中英

從文件讀取后,第二個字符數組將覆蓋第一個字符數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM