구조체변수를 함수인자에

thsckdgus9의 이미지

#include <stdio.h>
struct student
{
	char name[24];
	int id;
	int score;
};
void db(struct student *rec)
{
	scanf_s("%d %s %d", rec->id, rec->name, rec->score);
 
}
int main()
{
	struct student *record;
	db(&record);
	printf("%d %s %d", record->id, record->name, record->score);
	return 0;
}

간단한 소스인데 왜 에러가 나는지 모르겠네요..ㅠㅠ

첨부파일에 디버깅해서 에러사항을 캡쳐했습니다!!!!!!!

File attachments: 
첨부파일 크기
Image icon tlqkfdpfj.PNG13.04 KB
ml의 이미지

실제 공간이 없잖아요?

당연히 메모리 액세스 위반입니다.

new 내지는 malloc이 필요하겠지요

ml의 이미지

main 본문의 ...

struct student *record;

를, 이를 패러미터로 취하는 데 &record 로 주고 있기도 하네요.

thsckdgus9의 이미지

패러미터를 *rec으로 주고 변수를 record라고 선언해서 함수인자넣을때 포인터는 &가 필요하다고 알고있습니다!

ml의 이미지

struct student *record;
^ -- 이것
db(&record);
^ -- 이것

void db(struct student *rec)
^ -- 이것

scanf_s("%d %s %d", &(rec->id), rec->name, sizeof(rec->name), &(rec->score));
^ -- 이것 ^ -- 이것

익명 사용자의 이미지

1. struct student* record; / db(&record);
main()의 변수, *가 아닌 변수겠죠.. 아니면 동적으로 요구를 해야할거구요 (malloc)
*라면 그냥 record를 줘야할거고, 아니라면 &을 붙여서 줘야겠죠 (주소를 주어야하니)

2. db함수에서.
scanf_s의 형식에 따라 위와같이 고쳐주어야 하겠죠? rec->id, score는 %d니 주소를 주어야하고..
문자열은 이름과 길이를 주어야하겠죠? (_s 함수니까요)

#include <stdio.h>
#include <stdlib.h>
 
struct student
{
	char name[24];
	int id;
	int score;
};
void db(struct student *rec)
{
	scanf_s( "%d %s %d", &(rec->id), rec->name, sizeof(rec->name), &(rec->score) );
}
int main()
{
	struct student* record;
	record = malloc( sizeof(struct student)*1 );
 
	db( record );
	printf("%d %s %d", record->id, record->name, record->score);
 
	free( record );
	return 0;
}

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 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>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 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>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 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>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.