Gaa*_*ara 0 c string strtok visual-studio
我在使用时遇到了一些问题strtok_s.在下面的代码中,read_data包含字符串:
BEGIN_TRANSACTION CHANGE_0 PUT(debit_account,dbvalue.new)PUT(debit_account,dbvalue.new) CHANGE_0 PUT(credit_account,crvalue.new)PUT(credit_account,crvalue.new) OUTCOME_COMMITTED_0 END_TRANSACTION_0
Run Code Online (Sandbox Code Playgroud)
以下是我的代码:
char *delim = " ";
char* next_token;
line[0] = strtok_s(read_data, delim, &next_token);
while (line[i] = strtok_s(NULL, delim, &next_token) != NULL)
{
i++;
}
Run Code Online (Sandbox Code Playgroud)
执行后,只line[0]包含正确的字符串"BEGIN_TRANSACTION".所有其他line[i]的包含"0x00000001".我已在网上查询,但我无法在这里找到解决方案.任何帮助表示赞赏.
注意:我使用的是Visual Studio 2010
while (line[i] = strtok_s(NULL, delim, &next_token) != NULL)
Run Code Online (Sandbox Code Playgroud)
以上行应如下所示.注意括号.
while ((line[i] = strtok_s(NULL, delim, &next_token)) != NULL)
Run Code Online (Sandbox Code Playgroud)
解释:while由于运算符优先顺序,原始条件不正确.它等同于:
line[i] = (strtok_s(NULL, delim, &next_token) != NULL)
Run Code Online (Sandbox Code Playgroud)
这意味着它需要将strtok_s返回值与其进行比较并将其NULL分配给line[i].这就是为什么你得到1了line[i](除了最后一项应为0).
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |