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();
}本回答被网友采纳

在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中实现用键盘输入字符串并打印的方法步骤如下:首先,需定义一个数组空间用于存放字符串,例如分配100个数组单元。接着,使用gets()函数读取键盘输入的字符串,调用格式为gets(字符数组名)。然后,应用puts()函数输出之前读取的字符串内容,使用方法为puts(字符数组名)。最后,运行程序,即可成功实...

在C语言中如何实现用键盘输入一个字符串,并打印出来
在C语言中输入并打印字符串的编程方法如下:定义一个存放字符串的数组空间,比如为字符串分配100个数组空间。使用gets()函数获取键盘输入的字符串,输入格式为gets(定义的字符数组名)。使用puts()函数输出之前输入的字符串,输出格式为puts(定义的字符数组名)。运行程序后,成功实现输入字符串并原样在屏...

...来实现用户输入任意长度的字符串,反向输出在屏幕上。
include<stdio.h>#include<string.h>int main(){ int len, i; char s[1000]; while(scanf("%s", s) != EOF) { len = strlen(s); while(len--) { printf("%c",s[len]); } printf("\\n"); } return 0;} 望采纳 ...

C语言怎么输入字符串,输出显示内容
打开文件读:FILE *fp=fopen("file.txt","r");定义一个字符串,char str[100];输入你想查找的串:scanf("%s", str );再定义一个字符串,用来读取文件中的一行,char line[1024];\/\/定义大一点保证读一行 while( fgets(line,sizeof(line),fp)){ if ( strstr( line,str ) )printf("%s"...

在C语言中如何实现用键盘输入一个字符串,并打印出来?
在C语言中输入字符串后然后打印出来的编程方法如下:1.首先需要先定义一个存放字符串的数组空间,如给字符串100个数组空间。2.接着使用gets()函数来获取键盘输入的字符串。一般格式为gets(定义的字符数组名)。3.然后再使用puts()函数来输出之前输入的字符串内容。一般格式puts(定义的字符数组名)。4....

如何用C语言在屏幕输出字符串
代码如下:int main(){ float r,h,s;scanf("%f",&r);scanf("%f",&h);s=2*3.1415926*r*r+2*3.1415926*r*h printf("表面积是%f\\n",s);return 0;}

c语言中怎么输出字符串?
1、首先我们新建一个dev C++的项目。2、接下来在项目中新建C语言程序文件。3、然后在C语言文件中声明一个字节数组。4、接下来我们通过printf函数提示用户输入字符串,通过scanf接收用户输入的字符串。5、接着在通过printf函数输出用户输入的内容。6、最后运行C语言程序,我们输入内容以后就可以输出了。在C...

用C语言文件如何输出指定字符串
只说思路,具体函数用法请自行解决 fopen打开文件 循环(for)读入每行(fgets)判断该行是否以X开头,是则输出前六个字符,否不输出

怎么在c语言从键盘输入x=20,y=25,z=A,然后将输入的内容从屏幕输出?
&z);printf("您输入的内容为:x=%d, y=%d, z=%c", x, y, z);return 0;} ```运行程序后,会提示用户输入x、y、z的值,格式为"x=20,y=25,z=A"。然后通过scanf函数按照指定格式读取输入内容,并将其分别赋值给变量x、y、z。最后再通过printf函数将读取到的内容输出到屏幕上。

C语言控制台在指定位置输出字符
c语言控制台在指定位置输出字符代码演示如下:include <windows.h> void PrintChar(char *ch,UINT count,UINT x,UINT y) \/\/在坐标(x,y)处输出字符串ch,ch里有count个字符 { HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;ULONG unuse;pos.X=x;pos.Y=y;CONSOLE_SCREEN_BUFFER_INFO ...

相似回答