我有這樣一個函數,在這個函數中,文件名是作爲參數發送的,然後打開它並讀取和使用它的內容。我想達到的是相同的功能,但通過直接將字符串(文件內容)傳遞給該函數。所以,我想知道我究竟應該如何處理這和轉換像fgets
方法,feof
C++:如何將C庫文件IO轉換爲C++流IO?
unsigned CalcChecksum(char *filename, unsigned &found_checksum)
{
unsigned s, c, fcs;
char *ch;
char input[256];
FILE *fp;
s = 0;
fp = fopen(filename, "rb");
if (!fp)
{
found_checksum = 1;
return 0;
}
ch = fgets(input, 255, fp);
if ((feof(fp)) || (strncmp(input, "checksum", 8) == 0))
{
fclose(fp);
return s;
}
while (1)
{
while (*ch != '\n')
{
c = (unsigned)*ch++;
s = CRCtab[(s^c) & 0xFF]^s >> 8;
}
ch = fgets(input, 255, fp);
if ((feof(fp)) || (strncmp(input, "checksum", 8) == 0))
break;
}
if (strncmp(input, "checksum", 8) == 0)
{
fcs = 0;
sscanf(input, "checksum 0x%x", &fcs);
if (fcs == 0)
sscanf(input, "checksum 0X%X", &fcs);
found_checksum = fcs;
}
else
found_checksum = 0;
fclose(fp);
return s;
}
這看起來像一個簡單的C代碼。無論如何,你應該學習一些關於[C字符串](https://www.programiz.com/c-programming/c-strings)。 – Melebius
「像下面提到的那樣」?這是功能還是不是?而究竟*是什麼問題?正如所發佈的,這似乎更多的是一個目標,而不是關於實際問題的問題。你問如何將C庫文件IO轉換爲C++流IO?這是一個多步驟的過程,第一步是理解C++ IO流庫以及他們可以/不可以做什麼。 – WhozCraig
'如何將C庫文件IO轉換爲C++流IO?'是的,這似乎是提出問題的最佳方式。我不希望整個函數被轉換,但得到一個想法如何將Clib IO轉換爲C++流IO。 –