C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 519|回复: 8

记录句中单词的首地址 [复制链接]

Rank: 1

主题
0
帖子
3
C币
4 枚
在线时间
0 小时
发表于 2010-6-10 10:11:52 |显示全部楼层
1C币
在x.txt文件中给出10个字符串(10个句子),用程序读入,找出每个单词的首地址,输出到屏幕上后,再输出到x1.txt文件中。

最佳答案

zhuzhucong 查看完整内容

/*记录句子中单词的首地址,此源代码已在vc++6.0中编绎通过,应该达到了你的要求*/ #include #include #include int main() { FILE *fp1,*fp2; char ch; int flag=1; if((fp1=fopen("x.txt","r"))==NULL) //注意打开文件的格式,源文本文件放在vc运行此代码的工程文件中. { fprintf(stderr,"cann't open the file.\n"); exit(1); } ...

Rank: 3Rank: 3

主题
9
帖子
74
C币
187 枚
在线时间
17 小时
发表于 2010-6-10 10:11:53 |显示全部楼层
/*记录句子中单词的首地址,此源代码已在vc++6.0中编绎通过,应该达到了你的要求*/
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
     FILE *fp1,*fp2;
     char ch;
     int flag=1;

if((fp1=fopen("x.txt","r"))==NULL)                            //注意打开文件的格式,源文本文件放在vc运行此代码的工程文件中.
  {
      fprintf(stderr,"cann't open the file.\n");
       exit(1);
    }                                                               
if((fp2=fopen("x1.txt","w"))==NULL)                           
   {
      fprintf(stderr,"can't open the  file.\n");
     exit(2);
   }
while((ch=getc(fp1))!=EOF)
  {
     if(isalpha(ch)&&flag)
      {
          flag=0;
          printf("%p\n",fp1->_ptr);                    //FILE是一个结构,具体看stdio.h中的定义
       fprintf(fp2,"%p",fp1->_ptr);
       }
     if(isspace(ch)||ispunct(ch))
          flag=1;
   }  
fclose(fp1);
fclose(fp2);
return 0;
}

Rank: 1

主题
0
帖子
9
C币
9 枚
在线时间
0 小时
发表于 2010-7-2 02:43:27 |显示全部楼层
....

Rank: 1

主题
0
帖子
3
C币
3 枚
在线时间
1 小时
发表于 2010-9-28 16:06:01 |显示全部楼层
可以 先找第一个 再一个接一个的往后找

Rank: 1

主题
0
帖子
12
C币
13 枚
在线时间
4 小时
发表于 2011-1-16 10:10:17 |显示全部楼层
用指针,先fopen访问读取,指针顺着读取进度走,然后判断,读到一个单词,输出指针的地址。
类似于计算单词数量,只是单词数量计算的时候加入指针使指针指向单词首字,再输出指针就可以了。
具体没试过,不过办法可行!

Rank: 1

主题
0
帖子
31
C币
32 枚
在线时间
2 小时
发表于 2011-5-17 19:40:27 |显示全部楼层
先找出空格,再从后面找单词首地址,比较简单

Rank: 1

主题
0
帖子
31
C币
32 枚
在线时间
2 小时
发表于 2011-5-19 07:09:06 |显示全部楼层
我刚做的一个类似的你看看吧!
#include<stdio.h>
#include<string.h>
void main()
{
int i,j,k,t,p,str[20],m;
int max (int a[20]);
char s[80];
gets(s);
printf("%s",s);
/*输出字符串中最长单词*/
p=strlen(s);
for(i=j=k=t=0;i<p;i++)
{
if(s[i]!=' ') /*求出单词长度*/
   t++;
if(s[i]==' '||i==p-1)
{k=t;j=i-k; /*记录单词长度和单词首字母出现位置*/
str[m]=t;
t=0;
}
s[j+k]='\0'; /*结束标记*/
}
if(t==max(str))
{
        for(;s[j]!='\0';j++)
printf("%c",s[j]);
printf("\n");
}
}
int max (int a[20])
{
        int m=0,i;
        m=a[0];
        for(i=1;i<20;i++)
        if(m<a[i])
                m=a[i];
        return m;
}

Rank: 3Rank: 3

主题
9
帖子
74
C币
187 枚
在线时间
17 小时
发表于 2011-5-19 19:13:16 |显示全部楼层
请问"单词的首地址"是什么意思,是在内存中的地址,还是在文本文件中的位置,这不能含糊的

Rank: 3Rank: 3

主题
9
帖子
74
C币
187 枚
在线时间
17 小时
发表于 2011-8-27 15:48:47 |显示全部楼层
   这个帖好久没人回了
zhuzhucong
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 22:32

©2009-2011 cyuyan.com.cn

回顶部