用char打印输入文件char的第一行,但屏幕没有任何内容

时间:2015-04-24 08:13:35

标签: c pointers

所以我试图打印出传入的文件的第一行,让我们说它是一个纯文本文件,第一行有几个单词。

我打开文件并通过一个函数传递它,该函数对名为process的文件执行一些操作。如果出于调试原因,这一点工作,因为我的最终目标是在整行文本行中读取我的行并处理每一行并反转该行中的单词。

但我坚持到这里我用文本文件参数运行程序,我得不到任何回报,我知道我的逻辑听起来正确吗?我只是希望这最终打印出该行中的每个角色。然后最终将所有这些字符放在char数组或char instream [500]

有人能告诉我我做错了什么吗?

#include <stdio.h>
#include <stdlib.h>

void process(FILE *infile);

int main(int argc, char  *argv[])
{
    int i;
    FILE *fp;

    printf("argc = %d\n",argc);

    for(i = 1 ; i <= argc; i++)
    {
        fp = fopen(argv[i], "r");
        if(fp == NULL)
        {
            printf("The file: %s doesnt exist.\n", argv[i]);
        }
        else
        {
            printf("The file: %s does exist \n",argv[i]);
            process(fp);
        } 
    }

    return 0;
}


void process(FILE *infile)
{
    int k =0;
    char iochar;
    char instream[500];

    while((iochar = getc(infile)) != '\n')
    {
        printf("Hi there %c", iochar );  // nothing prints out here why not??
        //instream[k++] = iochar;
    }  
}

1 个答案:

答案 0 :(得分:-1)

您的process功能运行良好,您的问题可能来自您的输入文件。 如果您的目标是阅读文件的所有行并将其存储到变量中,那么您可能需要查看getline函数。 以下是process功能的更新,以便阅读整个文件并使用getline打印每一行

void process(FILE *infile)
{
  size_t line_length = 500;
  char *line;
  int len = 0;

  if ((line = malloc(sizeof(char) * line_length)) == NULL)
    exit(1);
  while ((len = getline(&line, &line_length, infile)) > 0)
    printf("%s", line);
}

我希望它有所帮助。