scanf처음연습과 결과/예상과 달라서 배운점

 파이썬 인풋과 다음 두가지 측면에서 다르다. 

파이썬 인풋은 print문이 사실 input에 결합된 형태. 


근데 c의 경우도 프린트문이 있는 것 같긴하지만 파이썬과는 좀 달리, 구분된 것임

scanf는 단지 정말 scan만 다루는 기능임

즉 그 프람프트는 printf로 그 전 라인에 따로 써줘야 함

파이썬은 input함수에 이 c에서 전 라인에 써주는 프람프트가 통합되어 있음

근데 scanf에서도 스트링 즉 첫번째 아규가 뭔가 하는 것 같은데 뭔지 모르겠음



현재 실험한 결과 이상함. 계속 제대로 안 나오고 스캔에프의 메모리 주소가 뜨고 

값을 콘솔에 입력해도 콘솔 출력물이 안나오고 안 바뀜


===>

onlinegdb로 가서 하니 잘 된다. 

즉 jdoodle 이 저 콘솔이 뭔가 이상하다 c가. 

그리고 해보니 

scanf의 그 ""는 콘솔 출력이 되는 게 아니라 포맷 지정만 하는 역할인 것이 확실하다. 

또한 이상한 점이 %c를 해서 char를 해보려 했는데 프로그래미즈에서도 1개 캐릭터만 

나온다. 여러개 캐릭터 나오려면 포인터로 해야 하는가?



==>이게 답이다 . 존나 복잡하고 골때리게도 두개변수를 선언해야 한다. 

배열 변수를 선언해서 캐릭터 저장하게 해야 하고 

그것에 대한 포인터 변수도 선언해서 할 수 있다. 

씨는 이렇게 복잡하다!

10으로 지정 안 하고 싶으면 맬록을 쓰라고 한다. 

https://cboard.cprogramming.com/c-programming/138489-scanf-string-pointer.html

https://stackoverflow.com/questions/14546018/using-scanf-function-with-pointers-to-character

이 위의 두 글에서 내 잘못을 알게되었다. 

#include <stdio.h>

int main()

{

    char stri[10]="NULL";

    char *sc;

    sc = stri;

    printf("Enter an integer: ");

    scanf("%s", sc);  

    printf("car = %s",sc);

    return 0;

}



https://www.programiz.com/c-programming/online-compiler/?ref=454b856b

이 컴파일러도 좋다 온라인에서 쓰기 씨를.

https://www.programiz.com/c-programming/c-input-output

여기 포맷 스페서파이어들




==================

드디어 해결했다 맬록으로. 

완성형이다. 

#include <stdio.h>

#include <stdlib.h>


int main()

{

    int *p = (int *)malloc(sizeof(int));

    

    printf("Hello World");

    scanf("%d",p);

    printf("%d",*p);

    return 0;

}


위에 인클루드 std가 마치 스탠다드 디비에이션같은데 스탠다드 약자고, lib라이브러리다. 
뒤에는 ; 가 없다. 
위처럼 하면 된다. 
print에 *를 해줘야 한다. 포인터라서. 
https://www.geeksforgeeks.org/dynamic-memory-allocation-in-c-using-malloc-calloc-free-and-realloc/
Previous Post Next Post