C语言截取c语言字符串函数

C语言中的字符串截取函数-电子产品世界论坛
C语言中的字符串截取函数
C语言中的字符串截取函数及应用
/*========================================================
源程序名 num.??? (pas,c,cpp)
可执行文件名 num.exe
输入文件名 num.in
输出文件名 num.out
对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:
sub1=a1a2a3
sub2=a2a3a4
sub3=a3a4a5
例如,五位数20207可以拆分成
sub2=020(=20)
现在给定一个正整数K,要求你编程求出1之间所有满足下述条件的五位数,
条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。
输入由键盘输入,输入仅一行,为正整数K(0&K&1000)。
输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。
不得重复输出或遗漏。如果无解,则输出“No”。
==========================================================*
#include &stdio.h&
#include &string.h&
char * left(char *dst,char *src, int n)
int len = strlen(src);
if(n&len) n =
while(n--) *(q++) = *(p++);
*(q++)='\0';
char * mid(char *dst,char *src, int n,int m)
int len = strlen(src);
if(n&len) n = len-m;
if(m&0) m=0;
if(m&len) return NULL;
while(n--) *(q++) = *(p++);
*(q++)='\0';
char * right(char *dst,char *src, int n)
int len = strlen(src);
if(n&len) n =
p += (len-n);
while(*(q++) = *(p++));
void main()
int i,k,outi,count=0;
int sub1,sub2,sub3;
char *strsub1,*strsub2,*strsub3,*strtempnum,*a,*b,*c;
if((p = fopen("num.out", "ab+")) == NULL)
printf("open file fail!");
printf("Please input int number(0&K&1000):");
scanf("%d",&k);
for(outi=10000;outi&=30000;outi++)
itoa(outi,strtempnum,10);
left(strsub1,strtempnum,3);
mid(strsub2,strtempnum,3,1);
right(strsub3,strtempnum,3);
sub1=atoi(strsub1);
sub2=atoi(strsub2);
sub3=atoi(strsub3);
if((sub1%k)==0 && (sub2%k)==0 && (sub3%k)==0)
fprintf(p,"%d\n",outi);
printf("outi=%d\n",outi);
fprintf(p,"%s\n","NO");
printf("Count=%d
OK",count);
fclose(p);
转自网友无知者无畏
关键词:&&&&&&&&&&&&
c中strncpy也可以实现这个功能
char *strncpy(char *dest, char *src, int n);
strncpy( strtemp,str+n , m )
--strtemp字符串变量,截取后的字符串存放处
--str 字符串变量,要截取的字符串
--n ,int 型,
-- str+n, 表示从第n 位开始截取字符串
--m,int型,表示截取m
看来大家对于C语言的学习热情越来越强烈了~~
启动C语言培训计划?
带*的函数,灵活运用就是大师了
指针就是C的精华
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有由于以文本方式和二进制方式读取回车符,读取的长度都为为2,而我需要的是字符个数,下面两种方法经过调试,并且结果正确。
第一种方法: 也可以读取一个不定长的文件。
FILE *pFile = fopen( pFilePath, "r" );
    if ( pFile == NULL )
       return 0;
    fseek( pFile, 0, SEEK_END );
    iFileLen = ftell( pFile );
   rewind( pFile );
    m_pFileText = new char[iFileLen+1];
   fread( m_pFileText, 1, iFileLen, pFile );
    m_pFileText[iFileLen] = 0;
    fclose( pFile );
第二种方法:
// 计算字符个数
FILE *pFile = fopen( pFilePath, "r" );
    int num = 0;
    while ( ch = getc( pFile ) != EOF )
       num++ ;
    fclose( pFile );
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益C语言获取文件中字符个数或者文件长度
  由于以文本方式和二进制方式读取回车符,读取的长度都为为2,而我需要的是字符个数,下面两种方法经过调试,并且结果正确。
  第一种方法: 也可以读取一个不定长的文件。
  FILE *pFile = fopen( pFilePath, \"r\" );
  if ( pFile == NULL )
  return 0;
  fseek( pFile, 0, SEEK_END );
  iFileLen = ftell( pFile );
  rewind( pFile );
  m_pFileText = new char[iFileLen+1];
  fread( m_pFileText, 1, iFileLen, pFile );
  m_pFileText[iFileLen] = 0;
  fclose( pFile );
  第二种方法:
  // 计算字符个数
  FILE *pFile = fopen( pFilePath, \"r\" );
  int num = 0;
  while ( ch = getc( pFile ) != EOF )
  num++ ;
  fclose( pFile );
(&15059人&已观看&)
(&20365人&已观看&)
(&13521人&已观看&)
本文关键词:     
已有(0)条评论
3秒钟快速注册
文明上网,登录发帖
精选内容新闻排行校园热点
各地课程推荐深圳广州上海北京南京杭州苏州天津常年开课¥750&&&&罗湖区常年开课¥750&&&&罗湖区常年开课¥750&&&&罗湖区常年开课¥750&&&&罗湖区更多&&&常年开课¥1380&&&&天河区常年开课¥980&&&&白云区常年开课¥980&&&&天河区常年开课¥1380&&&&天河区更多&&&常年开课¥1280&&&&黄浦区常年开课¥680&&&&徐汇区常年开课¥680&&&&徐汇区常年开课¥1280&&&&更多&&&常年开课¥1500&&&&海淀区常年开课¥1500&&&&海淀区常年开课¥1500&&&&海淀区常年开课¥1500&&&&海淀区更多&&&常年开课详询&&&&玄武区常年开课¥450&&&&下关区常年开课¥450&&&&栖霞区常年开课¥450&&&&下关区更多&&&常年开课¥700&&&&江干区常年开课¥600&&&&江干区常年开课¥700&&&&江干区常年开课¥850&&&&江干区更多&&&常年开课¥450&&&&工业园区常年开课¥450&&&&工业园区常年开课¥450&&&&工业园区常年开课¥450&&&&工业园区更多&&&常年开课¥950&&&&河西区常年开课¥950&&&&河西区常年开课¥950&&&&河西区常年开课¥1000&&&&更多&&&
7-297-277-227-227-137-13
7-297-277-227-227-137-13C语言字符串截取问题_百度知道
C语言字符串截取问题
|+||+||+|080000|+|0|+|01|+||+|测试|+||-|这个字符串中“|+|”是分隔符,“|-|”是结尾字符请问用C语言该怎么截取出字符串?谢谢
提问者采纳
如果组成部分的个数确定就很好截取,不管每个部分的长度是多少,这种情况的话用sscanf一句话就能取出来但如果不确定一共有多少个数据组成这一条记录,那就只能循环查找分隔符再加上字符串拷贝才行
不确定,分隔符间的字符串都是变长的
我给你写了段简单的示例代码,你可以根据需要自己再进行调整我用的动态分配内存,根据具体长度确定,图方便的话,定义一个长一点的缓冲区也行#include &stdio.h&#include &string.h&#include &stdlib.h&void show(char *start, size_t len){
char *buf = NULL;
buf = (char *)malloc(len + 1);
bzero(buf, len + 1);
strncpy(buf, start, len);
printf(&%s\n&, buf);
free(buf);}int main(){
char *s = &|+||+||+|080000|+|0|+|01|+||+|测试|+||-|&;
char *tmp = NULL;
size_t len = 0;
while (*p != '\0')
tmp = strstr(p, &|+|&);
if (tmp == NULL)
tmp = strstr(p, &|-|&);
if (NULL != tmp)
len = tmp -
show(p, len);
p = tmp + 3;
printf(&%s\n&, p);
return 0;}
提问者评价
太感谢了,真心有用
来自团队:
相关专业回答
可改变数组大小,满足你可能的输入状况。
#include&stdio.h&
int main(){
char str[200];
// 假定输入1行字符串,长度在200以内
char s[20][16];
// 假定 用逗号分隔 的部分 约20个,每个长度 不超过16字符
double d[20];
// 假定数据个数 不超过 20 个
int i,j=0,L,n=0;
fgets(str,200,stdin);
// 读入一行 字符串,含换行符
其他类似问题
为您推荐:
字符串的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言有类似从字符串第2个字符开始往后截6个字符的函数吗,或类似的函数功能。
[问题点数:30分,结帖人abcmsnet]
C语言有类似从字符串第2个字符开始往后截6个字符的函数吗,或类似的函数功能。
[问题点数:30分,结帖人abcmsnet]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 c语言字符串函数 的文章

 

随机推荐