Quantcast
Channel: 우분투 한국 커뮤니티
Viewing all articles
Browse latest Browse all 4577

C프로그래밍 질문드립니다.

$
0
0
Author: SHR
Forum: 기타 질문/답변
Date: 2014-03-17


#include <stdio.h>

int main(void)
{
int state;
char val[30];

int i=0;

/* File opening */
FILE* file = fopen("Test.txt" , "rt");

if(file==NULL)
{
printf("File opening Error. \n");
return 1;
}

/* input in val[30] */
fputs("Please input data:" , stdout);
fgets(val, sizeof(val), stdin);
puts(val);

/* Read the data in Test.txt => Test.txt에 있는 데이터를 val배열에 입력 시킨다. */
fgets(val, sizeof(val), file); // val=30.
puts(val); // 의문점

while(val[i] != '\0')
{
i++;
}

printf("The size that saved in arrangement 'val':%d \n" , i+1);

/* File closing */
state = fclose(file);

if(state!=0)
{
printf("File closing Error. \n");
return 1;
}

return 0;
}


성공적으로 컴파일이 완료되었고 프로그래밍 또한 잘 작동합니다. 하지만 자세히 살펴보니 의문점이 하나 생기더군요, 바로 val[30] 배열에 관한 것 인대요.

<프로그램 순서도>

'읽기전용'으로 Test.txt 라는 파일을 생성하고,

fgets함수를 이용해서 사용자로부터 데이터를 입력받고 val[30]에 저장후 val[30] 출력,
=> 입력받은 그대로 출력.

fgets함수를 이용해서 파일로부터 데이터를 입력받고 val[30]에 저장후 val[30] 출력, (Test.txt에는 "C-programing" 이라는 문자열이 저장되어 있습니다.)
=> 의문점 발생 지점, 입력받은 데이터는 출력시키지 않고 파일로 부터 입력받은 데이터만 출력 (C-programing)

while반복문을 이용해서 val[30] 에 저장된 데이터의 크기를 출력. => (13이 출력됨)
=> 사용자가 저장한 데이터는 어디로(?)

파일 종료후, 프로그램 종료.

<끝.>

val[30]에 분명 사용자로 부터 한번 입력받은 데이터를 저장했고, 또 Test.txt파일로 부터 읽어들인 데이터 또한 저장했는대 왜 [puts(val); // 의문점] 으로 출력 했을때는 파일로부터 입력 받은 데이터만 출력이 되는건가요?? while문을 통해서도 val[30] 에는 13개의 문자가 저장되어 있내요.

Viewing all articles
Browse latest Browse all 4577

Trending Articles