C 为什么程序在打印txt文件中的所有名称后崩溃?
代码如下:C 为什么程序在打印txt文件中的所有名称后崩溃?,c,C,代码如下: #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { FILE *fptr; if((fptr=fopen("names.txt","r"))==NULL) { printf("Error"); } int i,j; char *nptr[6000],c; for(i=0;i<
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
FILE *fptr;
if((fptr=fopen("names.txt","r"))==NULL)
{
printf("Error");
}
int i,j;
char *nptr[6000],c;
for(i=0;i<6000;i++)
{
nptr[i]=malloc(sizeof(char)*20);
}
for(i=0;i<6000;i++)
{
c=fgetc(fptr);
for(j=0;c!=',';j++)
{
/*if(c==' " ')
{
c=fgetc(fptr);
}*/
nptr[i][j]=c;
c=fgetc(fptr);
}
nptr[i][j]='\0';
puts(nptr[i]);
}
for(i=0;i<6000;i++)
{
free(nptr[i]);
}
fclose(fptr);
return 0;
}
#包括
#包括
#包括
int main()
{
文件*fptr;
if((fptr=fopen(“names.txt”,“r”))==NULL)
{
printf(“错误”);
}
int i,j;
char*nptr[6000],c;
对于(i=0;i您有一个输入错误。这是:
for(i=0;c<6000;i++)
应该是
for(i = 0;i < 6000; i++)
for(j = 0; c != ',' && c != EOF; j++)
除了上面先生提到的几点之外,还有三个问题在中作了解释,我想指出更多的例子,如
在你的第二个for
循环中,如果你无法打开文件,你真的应该继续这个程序吗?@BLUEPIXY在Q的末尾有一个链接,尽管我没有点击它:-)数据数少于6000。因此必须使用EOF
检查fgetc
的返回值。当您尝试去除引号时,您跳过了结束引号后的逗号。您必须修改循环逻辑以检查引号后的逗号。Thanx各位,我发现了问题…这是我的错误,而在这里ping代码..它是i@BoneyHaveliwala检查更新的答案。:-)将c的数据类型从char更改为int后,代码工作正常,但当我启用该部分注释部分时,程序再次崩溃。@boneyhavelivala您是否真的有如果(c=''”)
或它是一个打字错误?这应该是如果(c='')
,则根本没有问题。
for(j = 0; c != ',' && c != EOF; j++)