C语言:如何使字符数组由文本(.txt)文件字母组成?

C语言:如何使字符数组由文本(.txt)文件字母组成?,c,C,正如上面的标题,我想知道如何将txt文件中的字母保存到一个字符数组中 例如,如果文本文件是 123\n45 678 我要生成的字符数组arr[]将是arr[]={'1'、'2'、'3'、'\n'、'4'、'5'、''6'、'7'、'8'} 如何使数组包含获取单个字符?解决此问题的一种方法是使用fgets()函数 #包括 int main() { int size=15; 字符arr[大小]; FILE*pf=fopen(“.txt”,“r”); FGET(arr、尺寸、pf); puts(arr

正如上面的标题,我想知道如何将txt文件中的字母保存到一个字符数组中

例如,如果文本文件是

123\n45 678

我要生成的字符数组arr[]将是arr[]={'1'、'2'、'3'、'\n'、'4'、'5'、''6'、'7'、'8'}


如何使数组包含获取单个字符?

解决此问题的一种方法是使用fgets()函数

#包括
int main()
{
int size=15;
字符arr[大小];
FILE*pf=fopen(“.txt”,“r”);
FGET(arr、尺寸、pf);
puts(arr);
fclose(pf);
返回0;
}
fgets原型:

fgets(字符*字符串,整数起始,文件*ptr)

  • 它将字符分配给字符数组字符串
  • 它将一直读取到numberCharToRead,除非它在之前命中。在这种情况下,它将在字符串末尾追加“\0”字符
  • ptr指向文件的地址
  • 如果有错误,它将返回NULL,否则它将返回指针

    注意:fgets()不会被终止,因为文件由\n组成。当调用fgets时,它将读取为“\”、“0”

    或者,您可以通过使用文件大小作为数组大小来最小化分配的内存:

    #include <stdio.h>
    int main()
    {
    
        FILE *pf = fopen(".txt", "r");
    
        int check = fseek(pf, 0, SEEK_END);
        if (check)
        {
            printf("could not fseek\n");
        }
        int size = 0;
        size = ftell(pf);
        fseek(pf, 0, SEEK_SET); /* add this */
        char arr[size];
    
        fgets(arr, size, pf);
    
        puts(arr);
    
        fclose(pf);
    
        return 0;
    }
    
    #包括
    int main()
    {
    FILE*pf=fopen(“.txt”,“r”);
    int check=fseek(pf,0,SEEK_END);
    如果(检查)
    {
    printf(“无法fseek\n”);
    }
    int size=0;
    尺寸=ftell(pf);
    fseek(pf,0,SEEK_SET);/*添加此*/
    字符arr[大小];
    FGET(arr、尺寸、pf);
    puts(arr);
    fclose(pf);
    返回0;
    }
    
    您可以使用
    fread()
    通过单个调用进行输入。您尝试过什么?在编译时还是运行时?
    fread()
    绝对是正确的选择。你问“如何使数组包含获取单个字符”是什么意思?@OldProgrammer之后,我经常编写一个小代码,从其他内容生成源代码,然后将输出复制/粘贴到主项目中。例如
    printf(“char arr[]={”);For(inti=0;i<10;i++)printf(“%c',”,arr[i]);printf(“};\n”)
    在本例中特别注意换行符数据。
    #include <stdio.h>
    int main()
    {
    
        FILE *pf = fopen(".txt", "r");
    
        int check = fseek(pf, 0, SEEK_END);
        if (check)
        {
            printf("could not fseek\n");
        }
        int size = 0;
        size = ftell(pf);
        fseek(pf, 0, SEEK_SET); /* add this */
        char arr[size];
    
        fgets(arr, size, pf);
    
        puts(arr);
    
        fclose(pf);
    
        return 0;
    }