首页 > 电脑

如何读取某个字符串的起始位置?

更新时间2018-10-25 10:53:38

#include <stdio.h>

int main()

{

FILE *fp;

int b,e,i,a=0;

char s[100];

fp=fopen("t.txt","r");

while(fgets(s,100,fp)!=NULL)

{

a++;

b=e=-1;

i=0;

while(s[i])

if (s[i++]=='D')

{

b=i;

break;

}

if (b!=-1)

while(s[i])

if (s[i++]!='D')

{

e=i-1;

break;

}

if (b!=-1) 

printf("line %d begin=%d end=%d ",a,b,e);

}

fclose(fp);

return 0;

}

关于这个问题,想再咨询一下,我在前面加了一个if(s[0]!="M"){continue;}来判断每行是否是MNXXX这样的格式,然后将其省略,怎么不对呢?如果MN下面是一大行好操作,但是这个是很多行,希望再具体点儿给个判D的头和尾的操作?

你的确可以用

if(s[0]!="M")来判断(若其它数据的开头没有M的话)

程序可以改成以下的(以块来判断)

#include <stdio.h>
int main()
{
   FILE *fp;
   int b,e,i,a=0,l,bl,el;
   char s[100];
   fp=fopen("t.txt","r");

   while(fgets(s,100,fp)!=NULL)
       {
           if (s[0]=='M')
               {
                   if (a) //考虑第一块
                       {
                           if (b!=-1)
                               {
                                   printf("第%d块的D出现在第%d行的第%d个字符 ",a,bl,b);
                                   printf("在第%d行的第%d个字符结束 ",el,e);
                               }
                       }
                   a++;
                   b=e=-1;
                   l=0;
                   continue;
               }
           l++;
           i=0;

           while(s[i])
               if (s[i++]=='D')
                   {
                       if (b==-1)
                           {
                               b=i;
                               bl=l;
                           }
                       el=l;
                       e=i;
                   }

       }
   if (b!=-1) //最后一块处理
       {
           printf("第%d块的D出现在第%d行的第%d个字符 ",a,bl,b);
           printf("在第%d行的第%d个字符结束 ",el,e);
       }
   fclose(fp);
   return 0;
}

从几次你的问题,发现你基础还是待提高的,因为程序用的都是很基础的循环。

还有,上次的问题希望你能结贴给我,现在360问答中有太多不懂装懂混水的,关键管理有时也会不负责。要打击我回贴积极性的。


好简单的事。烂读撒。反正人家也是听不懂的。

上一篇:用一句指令建立一个实体表或者临时表,实体表取名为STUDENT。临时表取名为#STU表初始字段结构

下一篇:excel怎么筛选出多个日期段内,交叉的日期部分?