以下是代码:
#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;
}
如果我想打印没有引号的名字,我写了代码你可以看到我已经评论了一段时间,因为它不会让名字被打印..如果它被禁用然后程序崩溃后打印名字,否则它在开始时崩溃..
答案 0 :(得分:5)
你有一个错字。这样:
for(i=0;c<6000;i++)
应该是
for(i = 0;i < 6000; i++)
和c
应该是int
,因为fgetc
会返回int
,而不是char
。
另一个问题是姓氏后面没有逗号。所以
for(j=0;c!=',';j++)
应该是
for(j = 0; c != ',' && c != EOF; j++)
解释了其他三个问题
答案 1 :(得分:1)