C언어 바이너리 파일 출력관련해서 문제가 발생했습니다.

quarterhorse의 이미지

불타는 금요일 잘 보내고 계신지요 ㅠㅠ

전 코드때문에 머리가 불타고 있습니다 (으아아아악)

우분투 12.04에 gcc,ddd를 이용해서 C언어 공부를 하고 있는데요,

다름이 아니라 다음과 같은 코드가 있습니다.

#include <stdio.h>
struct student
{
	int id;
	char name[20];
	int score;
};
 
int main(int argc, char*argv[])
{
	struct student record;
	FILE *fp;
 	FILE *fp2;
	int c;
	fp = fopen("/home/quarterhorse/program/n5/n5.txt","r");
	if(fp==NULL)
	{
		printf("File Open for reading Fail!\n");
		return 0;
	}
	fp2 = fopen("home/quarterhorse/program/n5/n5s.txt","wb");	// 파일을 쓰긴 쓰는데 바이너리로
	if(fp==NULL)
	{
		printf("File Open for Binary Writing Fail!! \n");
		return 0;
	}
	c=fscanf(fp,"%d %s %d",&record.id,record.name,&record.score);
	while(c==3)
	{
		fwrite(&record,sizeof(record),1,fp2);
		c=fscanf(fp,"%d %s %d",&record.id,record.name,&record.score); 
	}
	fclose(fp);
	fclose(fp2);
	return 0;
}

fscanf를 이용하여 형식이 있는 파일을 읽을 때 이 형식을 저장할 수 있는 구조체를 선언하고, 이 구조체를 이용하여 이진파일로 저장을 해야 되는데요,

위의 코드들은 얼핏보면 문제가 없어보이는데, 실제로 돌려보면 세그먼트 오류가 뜹니다 (core뭐시기...)

고수님들의 도움이 필요합니다 ㅠㅠ

quarterhorse의 이미지

fwrite() at 0xb7e87775
main() at n5.c:52 0x804861b

fwrite() at 0xb7e87775
-> No source available for "fwrite() at 0xb7e87775"

라고 뜨네요... 그런데 리눅스 환경 말고 윈도우 환경에선 경로만 바꿨을시 제대로 동작합니다...

... 가면 갈수록 이유를 모르겠네요 ㅠ

익명 사용자의 이미지

fp2 = fopen("home/quarterhorse/program/n5/n5s.txt","wb");

home 앞에 root(/) 빼먹어서 그런가요? 소스는 문제 없어 보입니다만... 저거 외에는...

라스코니의 이미지

if(fp==NULL) 이 두개네요.
하나는 if(fp2==NULL) 되어야 할 듯요.

실제로는 home 이 /home 이 되어야 해서 fp2가 할당 받지 못해서 그런듯 합니다.

quarterhorse의 이미지

해결했습니다 ㅠㅠ 좋은주말 되세요 ㅠㅠ 정말 감사드립니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.