从数组中打印文本

时间:2015-04-06 23:59:14

标签: c

我似乎无法弄清楚为什么这只是打印阵列的第一个位置。该文件包括字母,标点符号和空格。它似乎是正确读取它,只是没有正确打印

#include <stdio.h>
#define LENGTH 520


char text[LENGTH];

void readDataFile();
void printScreen(char text[], int i);

int main() {

    readDataFile();
    return 0;
}



void readDataFile(){

    int i=0;
    FILE* fp = fopen("text.txt","r");
    while((fgets(&text[i], LENGTH, fp)) !=NULL){
        printScreen(&text[i], i);
        i++;
    }
  fclose(fp);
}

void printScreen(char text[],int i){

    printf("%c",text[i]);

}

这些是我所做的更改,现在只打印出文本文件的最后一行。

#include <stdio.h>
#define LENGTH 520


char text[LENGTH];

void readDataFile();
void printScreen(char text[], int i);

int main() {

    readDataFile();
    return 0;
}



void readDataFile(){

    int i=0;
    FILE* fp = fopen("text.txt","r");
    while((fgets(text, LENGTH, fp)) !=NULL){
        printScreen(text, i);
        i++;
    }
  fclose(fp);
}

void printScreen(char text[],int i){

    printf("%s",text);

}

2 个答案:

答案 0 :(得分:0)

我可以建议您使用其他方式打印整个文件吗?

用以下函数替换函数readDataFile():

void readDataFile(){

  int   nbread;
  int   fd;
  char  buf[2048];

  fd = open("text.txt", O_RDONLY);
  while ((nbread = read(fd, buf, 2048)) != 0)
    {
      buf[nbread] = '\0';
      printf("%s\n", buf);
    }
}

不要忘记在文件开头添加库fcntl:

#include <fcntl.h>
祝你好运! :)

答案 1 :(得分:0)

fgets()一次接受一行并将其存储在作为第一个参数提供的字符串中。看起来你正在遍历文件的每一行并从中打印一个字符。你应该尝试的是:

while((fgets(text, LENGTH, fp)) !=NULL){
    printf("%s", text);
}