【发布时间】:2014-06-03 12:03:42
【问题描述】:
我正在从文件中读取行并对其进行标记。标记由空格分隔,或者是否在引号内(例如:"to ken")。
我写了一个代码,但是指针有问题。我不知道如何存储一行中的标记,或者更确切地说设置指向它们的指针。
还有人建议我在我“识别”的每个标记后面加上一个 0,这样我就会知道它何时结束,并且我在 char *tokens[] 中仅存储指向标记开头的指针。
我当前的代码:
char *tokens[50];
int token_count;
int tokenize(char *line){
token_count = 0;
int n = 0;
while(line[n] != NULL || line[n] != '\n'){
while(isspace(line[n++]));
if(line[n] == '"'){
while(line[++n] != '"' || line[n] != NULL){
/* set tokens[n] */
}
}
else{
while(!isspace(line[n++])){
/*set tokens[n] */
}
}
n++;
}
tokens[token_count] = 0;
}
【问题讨论】:
-
'if(line[n] = '"'){' ... 应该是 '=='
-
line[n] != NULL是错误的格式,应该是line[n] != '\0'。 -
谢谢,会改的
-
您的问题是什么?请修复我的代码?
-
@user2202368 \0 是终止 C 字符串的 NUL 字符 (0x00)。它实际上等于 NULL,但完全没有相同的含义。至于我的评论:如果你想指向 C 字符串中的位置,你只需要一个指向令牌第一个字符的指针,即 char*。