Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么程序在打印txt文件中的所有名称后崩溃?_C - Fatal编程技术网

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++)