txt파일로 문자열을 입력받을때...
글쓴이: ljs0705 / 작성시간: 일, 2003/04/27 - 11:09오전
#include < stdio.h > #include < string.h > int main( void ){ char b[100]; FILE *f; if( ( f = fopen( "test.txt", "w" ) ) == NULL ) return 1; scanf("%s", b); //만약 "우리나라는 삼면이 바다이다."를 입력하면 test.txt파일에 //"우리나라는"만 출력된다. fprintf( f, "%s", b ); fclose( f ); return 0; }
입력을 받은후 "우리나라는 삼면이 바다이다."를 모두 파일에 출력하려면 어찌해야하나요...
Forums:
-_-
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
int main()
{
char c;
int in,out;
out=open("file.out",O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR);
while(scanf("%c",&c))
write(out,&c,1);
exit(0);
}
~
그냥 끝낼때는 Ctr+
============================================================
선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-
============================================================
Re: txt파일로 문자열을 입력받을때...
scanf는 스트링의 구분자를 white space와 new line으로 합니다.
그러므로 당근 하나의 스트링만을 입력받았으므로 '우리나라는'밖에 입력되지 않는 것입니다.
gets(b); <- new line만을 구분자로 삼죠
로 하신다면 모두 입력받으실수 있습니다.
-----------
청하가 제안하는 소프트웨어 엔지니어로써 재미있게 사는 법
http://sozu.tistory.com
윗분 답변대로 scanf ( "%s" ) 는 공백문자가 나오기 전까지의
윗분 답변대로 scanf ( "%s" ) 는 공백문자가 나오기 전까지의 string 만 입력받을 수 있습니다.
stdin 으로 입력을 받으시려면 gets() 대힌 fgets() 를 사용하시는게 좋을 것입니다. man page 확인해 보세요.
아참 파일에 기록할때 fgets 에서 "\n" 까지 입력되므로 만약 "\n" 을 제거하시려면 fprintf 대신 fputs() 를 사용하세요.
from saibi
scanf로도 가능합니다.
%s와 같은 대신 white space에서는 안끊기고 newline 에서만 끊기게 하려면
scanf ( "%[^\n]" ) ;
(scanf를 우습게 보지 마십시다. ^^;;)
Re: scanf로도 가능합니다.
오옷... 이런게 있었네요. 지금까지 항상 scanf는 좀 우습게 보는 경향이
있었는데 멋집니다. ^^ 덕분에 좋은걸 알았습니다. 고운 하루되세요.
=========================
CharSyam ^^ --- 고운 하루
=========================
[quote="dingdong77"]%s와 같은 대신 white spac
근데 이건 ANSI C 호환이 아닙니다.
다른 플랫폼에서는 사용 불가능합니다.
댓글 달기