首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C 语言中 strtok(x,y)函数 使用中的null参数有关问题

2012-11-05 
C 语言中 strtok(x,y)函数 使用中的null参数问题关于strtok的使用说明如下:“第一个参数x指定一个字符串,它

C 语言中 strtok(x,y)函数 使用中的null参数问题
关于strtok的使用说明如下:
“第一个参数x指定一个字符串,它包含零个或者多个y中一个或者多个分隔符分隔的标记。strtok找到str的下一个标记,并将其用NUL结尾,然后返回一个指向这个标记的指针。”

首先,nul是字符串结束符“\0”,用于结束字符串的;null是表示空指针,即没有具体指向的指针。

第一执行strtok(x,y)(假设y指向空格),则在x指向的字符串的第一个空格被改为 \0(设此处为a处),且返回一个指向该nul的指针。然后再次执行strtok(null,y),问题:
1. 此时指针从a处开始接着往下找下一个空格?按照strtok的定义说明,此时它应该从他的第一个参数开始,即从null开始,那这个null是个空指针,是如何确定从哪里开始找的呢?注:上面的设置是设为nul而非null。
2. 如果在指针向下查找y的过程中,遇到nul即\0,则说明此时已经到达x指向的字符串结尾,结束查找,是吗?

谢谢!

[解决办法]

C/C++ code
#include <string.h>#include <stdio.h>#include <stdlib.h>int main(int argc, char* argv[]){    FILE* ini;    char* name;    char* value;    char line[81];    ini = fopen("19.txt", "r");    if(ini == NULL)    {        return -1;    }    while(!feof(ini))    {        fgets(line, 80, ini);        name = strtok(line, "=");        value = strtok(NULL, "=");        if(name && value)        {            value[strlen(value) - 1] = '\0';            printf("[name=%s, value=%s]\n", name, value);        }        }        return 0;} 

热点排行