텍스트 문서에서 한 줄을 읽고 수학 방정식을 인쇄하는 프로그램을 작성하려고하지만 몇 가지 이유 때문에 두 번째 줄과 마지막 줄만 읽는 중입니다. TXT 파일.텍스트 파일의 각 행을 읽지 못함
텍스트 예를
subtraction,3,57
multiplication,90,46
division,26,7
division,26,0
코드
int main()
{
char name[21], namecopy[21];
char *nc, com = 100;
int num1, num2, p, i;
FILE *file;
file = fopen("C:\\hw10.txt", "r");
strcpy(namecopy, name);
while (fgets (namecopy,21,file)!=NULL)
{
fscanf(file, "%[^,]%*c %i%*c %i%*c", &name, &num1, &num2);
printf("%s %i %i\n", name, num1, num2);
if(strcmp(name, "subtraction") == 0)
{
p = num1-num2;
printf("%d - %d = %i \n", num1, num2, p);
}
if(strcmp(name, "addition") == 0)
{
p = num1+num2;
printf("%d + %d = %i \n", num1, num2, p);
}
if(strcmp(name, "multiplication") == 0)
{
p = num1*num2;
printf("%d x %d = %i \n", num1, num2, p);
}
if(strcmp(name, "division") == 0)
{
if(num2==0)
printf("undefiend\n");
else
{
p = num1/num2;
printf("%d/%d = %i \n", num1, num2, p);
}
}
}
char ch=getchar();
return 0;
}
에 있어야합니다 대신에 fscanf를 호출하는 fgets를 호출하는 대신에 fscanf를 호출하거나 fgets를 읽고 fgets 문자열에 sscanf를 추가하면 안됩니까? – goji
fgets (namecopy, 21, file)! = NULL; ----- namecopy 필드에서 읽은 값으로 무엇을하고 있습니까 ??? –
strcpy (namecopy, name); 이 행은 무의미 해 보입니다. 초기화되지 않은 이름을 namecopy에 복사 한 다음 fgets로 덮어 쓰는 것입니다. – goji