读书人

C实现字符串操作的有关问题高手帮忙

发布时间: 2012-03-02 14:40:29 作者: rapoo

C实现字符串操作的问题,高手帮忙看看,急啊~~
我从文件中读出一串字符,字符串的格式如下:

Tom:20;Jerry:30;Mary:15……;

字符串是一系列姓名和数字的组合,最后整个串以 "; "结束。

我现在要实现的是这样一个函数:

int GetValueOfStudent(char *string, char *name);

功能是返回字符串string中名字位name的Value,如GetValueOfStudent(string,Tom)的结果是20;

我的想法是用strtok()函数根据‘;’先分成一个一个子串然后在根据名字匹配,但是最后结果却总是不正确。

哪位大哥帮我实现一下,谢谢了。

[解决办法]

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int GetValueOfStudent(char *string, char *name)
{
int lenString = strlen(string);
int lenName = strlen(name);
int i,j;
for (i=0; i <lenString-lenName; ++i)
{
if (i!=0 && string[i-1]!= '; ') continue;
for (j=0; j <lenName; ++j)
{
if (string[i+j]!=name[j]) break;
}
if (j==lenName) break;
}
if (i==lenString-lenName) return -1;
i=i+j+1;
j=0;
while (i+j <lenName && string[i+j]!= '; ') ++j;
return atoi(string+i);
}

int main()
{
char s[] = "Tom:20;Jerry:30;Mary:15; ";
char name[] = "Jerry ";
return GetValueOfStudent(s, name);
}
[解决办法]
int GetValueOfStudent(char *string, char *name){
char *p=strstr(string,name);
if(p=NULL) return -1;
return atoi(p+strlen(name)+1); //1 for the colon
}

读书人网 >C语言

热点推荐