2012-01-16 71 views
-2

我不得不通過「新行」或「換行」字符(dec 10,十六進制0x0A)拆分網絡數據的有效載荷。 所以我試圖使用strtok()函數與我遇到幾個問題 當我想用「新行」字符做一個const char字符串。const char *中的非可見字符作爲strtok()分隔符

原:

`strtok(char * StringToSplit, const char * Delimiters)` 

這使得無效的初始化:

`const char delim[] = 10;` 

這給了警告有關使指針從int不投; Allthough
printf("Delim: %x", delim)

顯示()DELIM(是0xA)的正確值 應用程序崩潰中的strtok使用時。

`const char * delim = 10;` 

無警告或錯誤,輸出( 「DELIM:%X」,DELIM)給了正確的值 但strtok()函數沒有工作(如我所料,雖然)。

`char delim = 10;` 
`(ofc strtok(..., &delim))` 

這似乎做的工作,但我仍然有一個警告有關將其中一個const char PTR預計strtok()函數功能的非const字符PTR。

`char delim[] = "#";` 
`delim[0] = 10;` 

最後這似乎沒有警告的工作。

`char tmp[] = "#";` 
`tmp[0] = 10;` 
`const char *delim = tmp;` 

的問題是,這將是這樣一個不可見的字符傳遞給的strtok()函數的最簡單,最優雅的方式? 對我來說,這感覺就像這只是代碼。

回答

0

它沒有被誇大或不雅,它只是有很多的錯誤。

const char delim[] = 10; 

你爲什麼要聲明一個陣列這裏?這應該是:

const char delim = 10; 

然後:

char delim[] = "#"; 

你爲什麼要聲明一個數組,並設置它等於?這shuld是:

char delim = '#'; 
1

您需要:

const char *delim = "\n"; 

第二個參數必須包含的分隔符C字符串。你在各種化身中有很多東西不是 C字符串被錯誤地轉換爲C字符串。