在main函式中將如下形式的10行中的數保存到檔案test1-2.dat中,然后輸入一個整數m(1<=m<=10),呼叫disp函式,輸出前m行中的數。
1
5 7
9 11 13
13 15 17 19
17 19 21 23 25
21 23 25 27 29 31
25 27 29 31 33 35 37
29 31 33 35 37 39 41 43
33 35 37 39 41 43 45 47 49
37 39 41 43 45 47 49 51 53 55
disp函式的功能是:根據形參n的值,從檔案test1-2.dat中讀取內容并按照上面的形式輸出前n行。
如輸入5,結果如下顯示:
1
5 7
9 11 13
13 15 17 19
17 19 21 23 25
uj5u.com熱心網友回復:
#include<stdio.h>void disp(int n)
{ int i,j,k;
FILE*fp;
fp=fopen("test1-2.dat","rb");
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
k=getw(fp);
printf("%d\t",k);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int i,j,k,n;
FILE*fp;
fp=fopen("test1-2.dat","wb");
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
{k=i*4+1+j*2;
putw(k,fp);
}
}
fclose(fp);
scanf("%d",&n);
disp(n);
}
uj5u.com熱心網友回復:
#include <stdio.h>
void disp( int );
void disp(int n)
{
int line=0; //line:行計數器
char ch;
FILE*fp;
fp = fopen("test1-2.dat","r"); //打開文本檔案
while ( line<n && (ch=fgetc(fp))!=EOF ) {
putchar(ch); //顯示讀入的字符
if (ch=='\n') //若讀入\n則對line計數
line++;
}
fclose(fp);
}
int main(int argc, char** argv)
{
int i,j,k,n;
FILE*fp;
if ( (fp = fopen("test1-2.dat","w")) == NULL ) { //采用文本檔案保存原始資料
printf("Open file error.");
return 0;
}
for (i=0; i<10; i++) { //俺指定格式生成檔案
for (j=0; j<=i; j++) {
k = i*4+1+j*2;
fprintf(fp, "%4d", k);
}
fprintf(fp, "\n");
}
fclose(fp);
scanf("%d", &n);
disp(n);
return 0;
}
請看看以上程式是否滿足你的題目要求。
uj5u.com熱心網友回復:
不貼代碼,說一下思路,先呼叫C語言里按行讀取檔案的api(沒有這種api就一個字符一個字符的讀取知道碰到\n),到了所在行數,就一個字符一個字符的讀取,以空格分割轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24067.html
標籤:C語言
上一篇:可能是庫函式出了問題,求解答
