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개의 문자가 저장되어 있내요.
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개의 문자가 저장되어 있내요.