我有數據的文件:問題與串溢出與strtok的
C0001|H|Espresso Classics|The traditional espresso favourites.
C0002|H|Espresso Espresions|Delicious blend of espresso, milk, and luscious flavours.
C0003|H|Tea & Cocoa|Gloria Jean's uses only the finest cocoas and single garden teas. Always satisfying.
C0004|C|Iced Chocolate|Gloria Jean's version of a traditional favourite.
C0005|C|Mocha Chillers|An icy blend of chocolate, coffee, milk and delicious mix-ins.
C0006|C|Espresso Chillers|A creamy blend of fresh espresso, chocolate, milk, ice, and flavours.
C0007|C|On Ice|Cool refreshing Gloria Jean's creations over ice.
和下面的代碼來標記它:
#define MAX_CAT_TOK 4
#define DATA_DELIM "|"
char *token[100];
for(i = 0; i < MAX_CAT_TOK; i++)
{
if(i == 0) token[i] = strtok(input, DATA_DELIM);
else token[i] = strtok(NULL, DATA_DELIM);
printf("%s\n", token[i]);
}
的問題是,一旦遵循一個較長的字符串的字符串打印時,較長字符串的數據將打印在較短字符串的末尾。我假設這與字符串匹配有關?
有人看到我在這裏做的錯嗎?
什麼在DATA_DELIM? '#define DATA_DELIM「|」'或'#define DATA_DELIM「| \ n」'還是別的?你能否將你的代碼升級到從標準輸入中讀取完全可編譯的程序? – 2011-05-05 22:44:47
除了(但並不重要)喬納森的建議是粘貼在預期的和實際的輸出,而不是試圖描述輸出。 – 2011-05-05 23:40:08