【问题标题】:NULL after Open and Print File Content in C Code在 C 代码中打开和打印文件内容后为 NULL
【发布时间】:2009-08-26 03:17:57
【问题描述】:

这是一个打开和打印文件内容的简单代码。

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

int main  ( int arg_count, char *arg_vec[] ) {
    int ch;
    FILE * fp;
    int i;

    if (arg_count <2) {
        printf("Usage: %s filename\n", arg_vec[0]);
        exit(1);
    }

    if ((fp = fopen(arg_vec[1], "r")) == NULL) { // can't open file

        printf("Can't open %s \n", arg_vec[1]);
        exit(1);
    }

    for (i = 1; i <(arg_count+1); i++) {
         printf("%s \n\n", arg_vec[i]); // print file name

         while ((ch = getc(fp)) != EOF) {
             putc(ch,stdout); // print content
         }
    }

    fclose(fp);

    return 0;
}

但为什么它在输出打印输出的末尾给出 (null):

Filename.txt

text
text
(null)

【问题讨论】:

  • (arg_count+1) 是罪魁祸首。顺便说一句,argv[] 中的最后一个成员始终为 NULL。

标签: c file-io


【解决方案1】:

由于 arg_count+1,您循环了一到多次。 null 是因为您正在尝试打印参数列表中不存在的文件名。您还需要为列表中的每个文件打开和关闭。

#include #include int main (int arg_count, char *arg_vec[]) { 整数通道; 文件 * fp; 诠释我; 如果(arg_count

【讨论】:

    猜你喜欢
    • 2021-03-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多