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

在main函数中提示用户输入8个字符串,要求:

1. 写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。
2. 写一个函数inOut,将data.txt中的第1、3、5、7个字符串输入计算机,并在屏幕上显示出来。
如题,求解,实在想不出排序和第二步怎么做

#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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-28

    算法非常简单,使用文件操作函数打开文件,然后一个个读入字符,判断字符是否为特定字符,是的话输出。

    代码框架:

    #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;
    }

第2个回答  2014-12-30
#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();
}本回答被网友采纳
相似回答