C语言如何将文件中特定的字符串输出到屏幕
在main函数中提示用户输入8个字符串,要求:1.写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。2....
在main函数中提示用户输入8个字符串,要求:
1. 写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。
2. 写一个函数inOut,将data.txt中的第1、3、5、7个字符串输入计算机,并在屏幕上显示出来。
如题,求解,实在想不出排序和第二步怎么做 展开
1. 写一个函数sort,对上述字符串进行排序(用strcmp比较),并将排好序的字符串保存到磁盘文件data.txt中。
2. 写一个函数inOut,将data.txt中的第1、3、5、7个字符串输入计算机,并在屏幕上显示出来。
如题,求解,实在想不出排序和第二步怎么做 展开
3个回答
展开全部
#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;
}
展开全部
算法非常简单,使用文件操作函数打开文件,然后一个个读入字符,判断字符是否为特定字符,是的话输出。
代码框架:
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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();
}
#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();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询