gpt4 book ai didi

c - 从文件 c 读取输入时出错

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:51 25 4
gpt4 key购买 nike

我一直试图从一个文件中读取输入,但似乎有些东西不能正常工作......而不是读取文本中存在的单词“Words”,printf 总是显示 2 个额外的随机字符不包含在文件中...

函数是:

void search(struct word *w,FILE *f){

char *c;
char c2;
int i,j,k,l;
c=(char*)malloc(120*sizeof(char));

i=1;
while(f!=NULL) {
c2=fgetc(f);

while(c2!=EOF) {
while(c2!='\n') {
k=0;
while(c2!=' ') {
*(c+k)=c2;
k=k+1;
c2=getc(f);
}
if(w->name==c)
insert(i,j+1,name,&w);
}

memset(c, 0, sizeof(c));
j=j+k+1;
}
i=i+1;
}
}
}

主要功能是

int main()
{
struct word *s;
s=(struct word*)malloc(sizeof(struct word));
s->name=(char*)malloc(20*sizeof(char));
s->result=NULL;
scanf("%s",s->name);
search(s);
printres(s);
system("pause");
exit(0);
}

结构是

struct position
{
char *filename;
int line;
int place;
struct position *next;
};
struct word
{
char *name;
struct word *right;
struct word *left;
struct position *result;
};

为什么会出现这两个额外的字符?我该怎么办?

最佳答案

乍一看,这对我来说似乎是错误的

memset(c, 0, sizeof(c));

主要是因为 c 是一个 char*,然后 sizeof(c) 将取决于编译细节...这个测试也是错误的:

if(w->name=c)  

你可能想要

if(strcmp(w->name,c) == 0)

在用'\0'终止缓冲区之后。

此外,您应该检查缓冲区是否溢出,否则结果将不可预测。

关于c - 从文件 c 读取输入时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724637/

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