gpt4 book ai didi

C 程序读取文件内容并将其传递给数组

转载 作者:行者123 更新时间:2023-11-30 20:27:20 25 4
gpt4 key购买 nike

我想读取一个文本文件的内容并将其复制到 3 个数组中。前 14 行到“a”数组,接下来的 14 行到“b”数组,剩下的到 c。当我按 1 键输入选择时,它必须显示 .txt 文件的前 14 行。当我编译我给出的这段代码时,它只给出整个数组的第一个字符。请提前提供帮助并致谢。

我的代码:

#include<stdio.h>
#include<string.h>
void main()
{
int x,i;
char *a[100],*b[100],*c[100];
FILE *stream,*out;
char ch;
clrscr();
stream=fopen("test.txt","r");
while((ch=fgetc(stream))!=EOF)
{
for(i=0;i<14;i++)
a[i]==ch;
//ch=fgetc(stream);
//printf("%c",ch);
}
fclose(stream);
printf("Enter your choice");
scanf("%d",&x);
switch(x)
{
case 1:
for(i=0;i<14;i++)
printf("%s\n",a[i]);
break;
case 2:
for(i=0;i<14;i++)
printf("%s\n",b[i]);
break;
case 3:
for(i=0;i<14;i++)
printf("%s\n",c[i]);
break;
case 4:
exit(0);
default:
printf("Invalid choice");
break;
}
getch();
}

当前输出:输入您的选择1nnnnnnnnnnn

最佳答案

typedef char *CP14[14];

int main(){
int x,i;
char *a[14], *b[14], *c[14];
CP14 *abcp, *p[] = {&a, &b, &c, NULL};
char buffer[14*3*128]={0};//128 : max of one line
FILE *stream;
int ch, nlcount=0;//ch is int for fgetc
int gp = 0;

stream=fopen("test.txt","r");

abcp = p[gp];
(*abcp)[0]=&buffer[0];
for(i=0;i<sizeof(buffer)-1 && (ch=fgetc(stream))!=EOF;++i){
if('\n'== (buffer[i] = ch)){
buffer[i]= '\0';
if(++nlcount == 14){
nlcount = 0;
if(NULL == (abcp = p[++gp]))
break;
}
(*abcp)[nlcount]=&buffer[i+1];
}
}
fclose(stream);

...

关于C 程序读取文件内容并将其传递给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20772327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com