C字符串函数与Pascal字符串函数

什么C函数与这几个Pascal函数功能相同?
concat(s1,s2···);
delete(var s,i,l);
copy(s,i,l);(这个最重要)
功能差不多也行,copy这个最好完全一样。

连接运算(函数concat(s1,[,s2,…,sn]))
对应于C库函数中的strcat
char *strcat( char *strDestination, const char *strSource )
把字符串strSource连接在strDestination后,返回strDestination的指针,对于错误并没有保留特殊的返回值。
求子串(函数copy(s,i,l))
C库函数中并没有直接的函数与之对应,但标准库函数中有与之像类似的实现
char *strncpy( char *strDest, const char *strSource, size_t count );
把字符串strSource里第I个字符起(默认为0),长为count的串复制到strDest中,返回strDest的指针,对于错误并没有保留特殊的返回值。

删子串(过程delete(var s,i,l) )
C库函数中并没有直接的函数与之对应,可以利用C语言中字符串以’\0’结束的特点,使以及一些标准库函数实现上述功能:
char *strDelete(char *strSource, int i, int j)
{
char tmp[1000];
strncpy(tmp,strSource + i + j,strlen(strSource) - i - j + 1);
*(strSource + i - 1) = NULL;
strcat(strSource,tmp);
return strSource;
}

插入子串(过程insert(s1, var s,i))
同样的我们也可以通过一系列的库函数的组合,去实现标准库中并没有的insert函数
char *strInsert(char *strTarget, char *strSource, int Position)
{
char tmp[1000];
strncpy(tmp,strTarget + Position,strlen(strTarget) - Position);
tmp[strlen(strTarget) - Position] = '\0';
*(strTarget + Position) = NULL;
strcat(strTarget,strSource);
strcat(strTarget,tmp);
return strTarget;
}

求串长(函数length(s))
对应与C库函数中的strlen函数
size_t strlen( const char *string );
返回字符串string的长度,对于错误并没有保留特殊的返回值。

搜索子串位置(函数pos(s1,s2))
C库函数中并没有直接的函数与之对应,但标准库函数中有一组函可以实现上述功能

int Pos(char *string1, char *string2)
{
for (unsigned int i = 0; i<strlen(string1) - strlen(string2); i++)
if (!strncmp(string1 + i,string2,strlen(string2)))
return i;
return -1;
}
当存在串string2与string1像匹配时,返回串string2首字母在string1中的位置,没有匹配,则返回-1。

数值转换为数串(过程str(x,var s))
对应与C库函数中的_itoa函数
char *_itoa( int value, char *string, int radix );
将值为value的数字按在基radix下转换到string中,如果radix = 10,且value为负,则string中的第一个字符为‘-’,函数返回转换后string的指针,并不返回错误。

数串转换为数值(过程val(s,var v,var c))
对应与C库函数中的atoi函数
int atoi( const char *string );
将字符串string中的数字转换为int型的数,函数在第一次遇见不能识别为数字的字符是停止,函数返回有string中得到的int型的数

字符的大写转换(函数upcase(ch))
对应于C库中的_strupr
char *_strupr( char *string );
将所有string中的小写字母转换成大写,并返回string的指针,对于错误并没有保留特殊的返回值。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-08
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.
例:concat(‘11’,’aa’)=’11aa’;
2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为L的子串。
例:copy(‘abdag’,2,3)=’bda’
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’

先找到的资料,根据这个再给你找C

1.strcat
语法:

#include <string.h>
char *strcat( char *str1, const char *str2 );

功能:函数将字符串str2 连接到str1的末端,并返回指针str1. 例如:

printf( "Enter your name: " );
scanf( "%s", name );
title = strcat( name, " the Great" );
printf( "Hello, %s\n", title );

2.strncpy
语法:

#include <string.h>
char *strncpy( char *to, const char *from, size_t count );

功能:将字符串from 中至多count个字符复制到字符串to中。如果字符串from 的长度小于count,其余部分用'\0'填补。返回处理完成的字符串。

比如pascal中的 s = copy(‘abdag’,2,3)

c中可以 d="abdag";strncpy(s,d+1,3);来做

注意c中的字符串位置以0开始.

3.这个没有现成的,c++中可以用 replace来做

c中可以自己写一个函数

void delete(char* s,int from,int length){
int i;
if(length<1 || strlen(s)<from)return;
for(i=from-1;s[i]&&i<from+length;i++)s[i]=s[i+length];
s[i]=0;
}

用法一样 delete(s,2,2);

其实你说的所有函数都可以一模一样的实现,稍微动点脑筋.本回答被提问者采纳
第2个回答  2009-10-17
自己查一下就好了
第3个回答  2009-10-17
废话那么多干吗
应该是一样的
相似回答