- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我下面的代码中,我使用 strtok 从文件中解析一行代码,如下所示:
1023.89,863.19 1001.05,861.94 996.44,945.67 1019.28,946.92 1023.89,863.19
由于文件可以有不同长度的行,所以我不使用 fscanf。除了一个小故障外,下面的代码有效。它循环了太多次并读入一个长空字符串“”,然后再次循环识别空标记“”并退出 while 循环。我不知道为什么会这样。
如有任何帮助,我们将不胜感激。
fgets(line, sizeof(line), some_file);
while ((line != OPC_NIL) {
token = strtok(line, "\t"); //Pull the string apart into tokens using the commas
input = op_prg_list_create();
while (token != NULL) {
test_token = strdup(token);
if (op_prg_list_size(input) == 0)
op_prg_list_insert(input,test_token,OPC_LISTPOS_HEAD);
else
op_prg_list_insert(input,test_token,OPC_LISTPOS_TAIL);
token = strtok (NULL, "\t");
}
fgets(line, sizeof(line), some_file);
}
最佳答案
您必须使用正确的分隔符列表。您的代码与评论相矛盾:
token = strtok(line, "\t"); //Pull the string apart into tokens using the commas
如果您想用逗号分隔标记,请使用 ","
而不是 "\t"
。此外,您当然不希望标记包含换行符 \n
(出现在 fgets
从文件中读取的每一行的末尾)。所以将换行符添加到分隔符列表中:
token = strtok(line, ",\n"); //Pull the string apart into tokens using the commas
...
token = strtok (NULL, ",\n");
您可能还想将空格字符添加到分隔符列表中(863.19 1001.05
是单个标记还是两个标记?您想删除行尾的空格吗?)。
关于c - Strtok - 在行尾读取空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755437/
我正在尝试创建一个程序,其中字符串的前三个字符重复给定次数,如下所示: foo('Chocolate', 3) # => 'ChoChoCho' foo('Abc', 3) # => 'AbcAbcA
我有以下字符串: std::string str = "Mode:AAA:val:101:id:A1"; 我想分离一个位于 "val:" 和 ":id" 之间的子字符串,这是我的方法: std::st
DNA 字符串可以是任意长度,包含 5 个字母(A、T、G、C、N)的任意组合。 压缩包含 5 个字母(A、T、G、C、N)的 DNA 字母串的有效方法是什么?不是考虑每个字母表 3 位,我们可以使用
是否有一种使用 levenstein 距离将一个特定字符串与第二个较长字符串中的任何区域进行匹配的好方法? 例子: str1='aaaaa' str2='bbbbbbaabaabbbb' if str
使用 OAuth 并使用以下函数使用我们称为“foo”(实际上是 OAuth token )的字符串加密 key public function encrypt( $text ) { // a
我是一名优秀的程序员,十分优秀!