C语言如何将文件中特定的字符串输出到屏幕

在main函数中提示用户输入8个字符串,要求:1.写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。2.... 在main函数中提示用户输入8个字符串,要求:

1. 写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。
2. 写一个函数inOut,将data.txt中的第1、3、5、7个字符串输入计算机,并在屏幕上显示出来。
如题,求解,实在想不出排序和第二步怎么做
展开
 我来答
xoaxa
推荐于2017-09-05 · TA获得超过8610个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3483万
展开全部
#include <stdio.h>
#include <string.h>

#define N 8

void sort(char s[][81],int n) {
int i,j,k;
char tmp[81];
for(i = 0; i < n - 1; ++i) {
k = i;
for(j = i + 1; j < n; ++j) {
if(strcmp(s[k],s[j]) > 0)
k = j;
}
if(k != i) {
strcpy(tmp,s[k]);
strcpy(s[k],s[i]);
strcpy(s[i],tmp);
}
}
}

void inOut(char s[][81],int n) {
int i;
FILE *fout = fopen("data.txt","wt");
if(fout == NULL) {
printf("打开文件操作失败!\n");
return;
}
for(i = 0; i < n; ++i)
fprintf(fout,"%s\n",s[i]);
fclose(fout);
}

int main() {
char s[N][81];
int i;
printf("请输入%d个字符串\n",N);
for(i = 0; i < N; ++i)
scanf("%s",s[i]);
printf("排序前:\n");
for(i = 0; i < N; ++i) printf("%s",s[i]);
printf("排序后:\n");
sort(s,N);
for(i = 0; i < N; ++i) printf("%s",s[i]);
inOut(s,N);
printf("第1 3 5 7个字符串是:\n");
for(i = 1; i < N; i += 2) printf("%s",s[i]);
return 0;
}
tattackor
推荐于2017-09-28 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部
  1. 算法非常简单,使用文件操作函数打开文件,然后一个个读入字符,判断字符是否为特定字符,是的话输出。

  2. 代码框架:

    #include<stdio.h>
    FILE *f;
    char c;
    int main(){
      f=fopen("指定文件","r");
      while((c=fgetc(f))!=EOF){
        if(c=='特定字符') printf("%c ",c);
      }
      fclose(f);
      return 0;
    }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdyzxy
2014-12-30 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3746万
展开全部
#include<stdio.h>
#include<string.h>
void sort(char str[][256],int n)
{ int i,j;
char buffer[256];
FILE *fp;
for ( i=0;i<n-1;i++ )
for ( j=i+1;j<n;j++ )
if ( strcmp(str[i],str[j] )>0 )
{ strcpy(buffer,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],buffer);
}
if ( fp=fopen("data.txt","w+") )
{ for ( i=0;i<n;i++ )
{ sprintf(buffer,"%s\n",str[i]);
fputs(buffer);
}
fclose(fp);
} else printf("无法建立文件。\n");
}
void inOut(char str[][256],int n)
{ FILE *fp;
int m,i;
m=i=0;
if ( fp=fopen("data.txt","r") )
{ while ( !feof(fp) )
{ fscanf(fp,"%s",str[m]);
if ( i%2==0 ) { printf("%s\n",str[m]); m++; if ( m>=n ) break; }
i++;
}
fclose(fp);
} else printf("data.txt无法打开读取数据。\n");
}
void main()
{ char str[8][256];
int i;
for ( i=0;i<8;i++ ) scanf("%s",str[i]);
sort(str,8);
inOut();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式