从文本文件读取到 C 数组中进行标记化
当你用 C 语言读取文件时,如何进行标记化?
文本文件:
PES 2009;Konami;DVD 3;500.25; 6
刺客信条;育碧;DVD;598.25; 3
地狱;EA;DVD 2;650.25; 7
char *tokenPtr;
fileT = fopen("DATA2.txt", "r"); /* this will not work */
tokenPtr = strtok(fileT, ";");
while(tokenPtr != NULL ) {
printf("%s\n", tokenPtr);
tokenPtr = strtok(NULL, ";");
}
希望打印出:
PES 2009
Konami
。
。
。
How do you tokenize when you read from a file in C?
textfile:
PES 2009;Konami;DVD 3;500.25; 6
Assasins Creed;Ubisoft;DVD;598.25; 3
Inferno;EA;DVD 2;650.25; 7
char *tokenPtr;
fileT = fopen("DATA2.txt", "r"); /* this will not work */
tokenPtr = strtok(fileT, ";");
while(tokenPtr != NULL ) {
printf("%s\n", tokenPtr);
tokenPtr = strtok(NULL, ";");
}
Would like it to print out:
PES 2009
Konami
.
.
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个:
try this:
您必须将文件内容读入缓冲区,例如使用
fgets
或类似工具逐行读入。然后使用strtok来标记缓冲区;读取下一行,重复直到 EOF。You must read the file content into a buffer, e.g. line by line using
fgets
or similar. Then usestrtok
to tokenize the buffer; read the next line, repeat until EOF.strtok()
接受char *< /code> 和一个
const char *
作为参数。您正在传递一个FILE *
和一个const char *
(隐式转换后)。您需要从文件中读取字符串并将该字符串传递给函数。
伪代码:
strtok()
accepts achar *
and aconst char *
as arguments. You're passing aFILE *
and aconst char *
(after implicit conversion).You need to read a string from the file and pass that string to the function.
Pseducode:
使用strtok是一个BUG。尝试 strpbrk(3)/strsep(3) 或 strspn(3)/strcspn(3)。
Using strtok is a BUG. Try strpbrk(3)/strsep(3) OR strspn(3)/strcspn(3).