如何读取文件并在C语言中使用getc?

问题描述 投票:0回答:2

我是即将进入上学期的Comp Sci高级专业,我将只参加一个仅涉及C语言的课程。我试图通过制作一个我构想的简单程序来练习我的技能。我只想读取一个文件,将其所有内容放入一个数组中,然后遍历该数组以查找拼出"Waldo"的字符序列。换句话说,沃尔多在哪里?程序。

我还没有开始使用数组对“ Waldo”搜索进行编码,但是,我只是想测试我对getc()函数的使用并输出输入文件的内容,但是使用源代码可以到目前为止,我仅收到看似乱码的错误输出(可能与我错误地利用getc()返回值的方式有关。)>

也许我不应该使用getc(),而是使用scanf()类型的函数?另外,在这里插入和打印数组时,我非常想尝试掌握按引用指针表示法,所以我想避免使用括号表示法(按值)来引用数组元素。诚然,我可能对指针没有最全面的了解。

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

void main( int argc, char *argv[] )
{

    FILE *filePointer;
    int filechar, i; 
    char input_file_array[512];
    char *arrayPointer = input_file_array;
    filePointer = fopen( argv[1], "r" );

    if ( argc > 2 || ( filePointer = fopen( argv[1], "r" ) ) == NULL )
    {
        printf( "\nIncorrect usage, please say...\nRunWaldo *filename*\n\n" );
        exit( 1 );
    }

    if ( filePointer != NULL )
    {    
        while ( !feof( filePointer ) )
        {
            *arrayPointer = getc( filePointer );
            arrayPointer++;
        }

    for ( i = 0; i < 512; i++ )
    {
        printf( "%c", *(arrayPointer + i) );
    }

    printf("\n");

}

“这里是输出...”

我是即将进入上学期的Comp Sci高级专业,我将只参加一个只涉及C语言的课程。我试图通过做一个相当简单的练习我的技能...

c file pointers scanf getc
2个回答
1
投票

代码中的主要问题实际上是如何打印input_file_array。假设您正在从文件中读取10个字符。 arrayPointer现在从input_file_array的原始位置偏移了10。之后,您无需将arrayPointer重置为input_file_array[0]


0
投票

这是OG发表的第二个问题。在输出末尾得到垃圾的原因是因为input_file_array的最后一个字符不为0(NULL值)。这在两种情况下发生:

© www.soinside.com 2019 - 2024. All rights reserved.