묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
구조체 scanf_s 질문
안녕하세요. 구조체 코딩 공부하다가 오류가 계속 발생해서 무엇이 문제인지 모르겠어서 질문드립니다 ..ㅠscanf_s("%s" , p_friend->name, 메모리 크기)를 해야 되는거 같은데.. (unsigned int)sizeof(p_friend->name)를 추가하여 실행해봐도 실행이 안됩니다 ㅠㅠ어떤 코드를 작성해야하는 것이 맞을까요..? 구글링해도 1시간째 고민을 해봐도 답이 없어 질문드립니다 !
-
미해결
빈번한 디버깅 오류
삭제된 글입니다
-
해결됨
C언어 대문자 <-> 소문자 변환 함수
#include <stdio.h> int main() { int ch; while (1) { ch = getchar(); if ('A' <= ch && ch <= 'Z') { ch = ch + 32; putchar(ch); } else if ('a' <= ch && ch < 'z') { ch = ch - 32; putchar(ch); } else printf("범위를 벗어난 입력입니다."); } return 0; } 이렇게 함수를 구성해보았습니다. 입력받은 문자를 ch에 저장하고, 저장된 문자의 아스키코드가 알파벳 대문자의 범위(65~90)에 속한다면 아스키코드값에 +32를 해주어 소문자로 변환을 하고 반대로 저장된 문자의 아스키코드가 알파벳 소문자의 범위(97~122)에 속한다면 아스키코드값에 -32를 해주어 대문자로 변경을 하는 방식입니다. 그리고 만약, 알파벳 대문자의 범위나 소문자의 범위에도 속하지 않는 기타 문자가 저장된다면 오류메세지를 출력하게끔 구성을 하였습니다. 실제로 컴파일을 해보면 대문자는 소문자로 소문자는 대문자로 정상적으로 변환이 되지만 마지막 else에 있는 printf 함수가 ch에 저장된 값에 상관 없이 아래 사진과 같이 지속적으로 함께 실행이 됩니다. 어느 부분에서 문제가 발생한 걸까요ㅠ.ㅠ
-
미해결
c언어 입문자 포인터 관련 질문이 있습니다.
int main() { int num1 = 10; int num2 = 15; int temp =0; int *ptr1 =&num1; int *ptr2=&num2; temp = ptr1; ptr1= ptr2; ptr2 = temp; printf(" *ptr1 : %d , *ptr2 : %d,", *ptr1, *ptr2); } ptr1이 가리키는 변수와 ptr2가 가리키는 변수를 서로 바꿔 ptr2는 num1을 가리키고, ptr1은 num2를 가리키게 하는 함수를 만들어보았습니다. 물론 ptr1 = &num2; ptr2 = &num1; 이렇게 하는 간단한 방식도 있다는 걸 알지만, 어쩌다가 저 부분에 궁금증이 생겼는데, 위와같이 temp를 그냥 int temp = 0; 으로 선언하면 컴파일이 제대로 이루어지지 않지만, int *temp; 와 같이 포인터 변수로 선언하면, 문제 없이 작동하는 걸 확인하였습니다. 저는 포인터 변수를 선언하면, *ptr이라는 변수가 ptr에는 가리키는 변수의 주소가 상수로 저장이 되고, *ptr은 ptr이라는 변수에 상수로 저장된 주소에 접근하는 일종의 연산이라고 생각하였기에, ptr에 저장된 상수(주소값)을 int 형으로 선언된 일반 변수(temp)에 저장하고, 그것을 다시 다른 변수(ptr2)에 옮겨도 문제가 없을 것이라고 생각했는데, temp라는 일반 변수에서는 오류가 발생하고, *temp라는 포인터 변수에 저장을 해야만 제대로 작동하는 것을 확인하였는데 왜 *temp로 선언해야만 제대로 작동하는 지 이유가 궁금합니다..!
-
미해결홍정모의 따라하며 배우는 C언어
The argument has type 'unsigned long'
안녕하세요! 맥 터미널로 공부하고 있는 학생입니다! 다름이 아니라 sizeof 연산자 사용 부분에서 printf("%u", sizeof(unsigned int)); 를 출력하면 format specifies type 'unsigned int' but the argument has type 'unsigned long'라는 오류 메시지가 뜹니다! 바쁘시겠지만 잘부탁드리겠습니다!
-
미해결
IT계열 취준생분들 월260으로 3개월 인턴시켜주는 사업 있네요 자격되시는분들 추천합니다.
블록체인 분야 기술을 배우고싶은 분들 or 블록체인 분야 취업을 원하시는 분들 주목! 서울시에서 뉴딜일자리사업 일환으로 IT 블록체인과정으로 3개월 인턴십 (급여 월 260) 보내주는 프로그램 진행중인데 신청해보세요! https://blog.naver.com/kjc_sh/222745988610 자세한 내용은참고해주세요 오픈카카오톡 문의 [ https://open.kakao.com/o/stkiOIhe ]
-
미해결홍정모의 따라하며 배우는 C언어
기호상수 관련해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <stdio.h> #define TAX_RATE 0.2 int main() { const int MONTHS = 12; int m_salary, y_salary; printf("월급을 입력하시오 : "); scanf("%d", &m_salary); y_salary = MONTHS * m_salary; printf("연봉은 %d입니다.\n", y_salary); printf("세금은 %f입니다.", y_salary * TAX_RATE); return 0; } 연봉과 세금에 관한 코딩입니다. printf("세금은 %f입니다.", y_salary * TAX_RATE);에서 double이나 float같은 실수형자료형을 쓰지않았음에도 %f로 썼는데 됬습니다. 이유를 알수있을까요?
-
미해결IT 기업 취업을 위한: 코딩테스트 혼자서 정복하기 (C/C++)
C언어로 푼 코드는 없나요?
강의 설명은 C언어로 강의를 하는 것처럼 작성돼 있어서 듣고있는데 문제 풀이는 C++로 하시고, 코드도 C++ 코드만 있는거 같은덷 C로된 코드작성 영상이나 정답 코드는 없을까요?
-
미해결
C언어 관련질문입니다.
int main(void) { int age; double height; char grade; printf("Input your grade : \n"); scanf("%c", &grade); printf("Your grade is %c\n", grade); printf("Input age and height\n"); scanf("%d%lf", &age, &height); printf("age is %d height is %.1lfcm\n", age, height); } 이렇게 코딩을 하면 출력이 Input your grade : A Your grade is A Input age and height 20 180 age is 20 height is 180.0cm 이렇게 나오는데 int main(void) { int age; double height; char grade; printf("Input age and height\n"); scanf("%d%lf", &age, &height); printf("age is %d height is %.1lfcm\n", age, height); printf("Input your grade : \n"); scanf("%c", &grade); printf("Your grade is %c\n", grade); } 이렇게 하면 출력값이 Input age and height 20 180 age is 20 height is 180.0cm Input your grade : Your grade is 이렇게 나옵니다. 순서에 따라 왜 이런가요?
-
미해결문제로 배우는 C언어
scanf 입력한 수 중 일부 자리만 저장
1. 이해한 것 강의에서 설명한대로 scanf는 lf로 받고 printf 시에만 0.2f 를 하게되면, 진짜 둘째짜리까지만 받은게 아니라 원래 소수까지 받고 나서 곱한 뒤에 출력할 때 소숫점 셋째자리에서 반올림하는 코드라고 이해했습니다. 2. 궁금한 것 3.1295846 과 7.118592 를 입력해도 3.12와 7.11 만 입력받아서 출력예제와 동일한 값 22.18이 나오게 할 수는 없나요? 있다면 코드를 알고싶어요. 3. 제 생각 저는 scanf("%0.2lf %0.2lf", &a, &b) 를 시도해봤는데 0이 나왔습니다. 문자열 배열 두개를 선언해서 [인덱스] 번호를 활용해 0부터 쭉 받으며 데이터가 숫자인지 소수점인지 비교하다가 소수점 발견시 그 요소 이후 두 요소만 더 저장하는 방법을 생각해보았는데 배보다 배꼽이 큰 것 같습니다.
-
해결됨홍정모의 따라하며 배우는 C언어
따배씨 스터디 많은 관심 부탁드립니다 ㅎ
스터디 란에 글 올렸습니다 관심 있으신분들 참여 부탁드려요 ㅎ
-
미해결
printf, scanf 대신 putchar, getchar를 쓰는 경우는 언제인가요?
printf, scanf 대신 putchar, getchar를 쓰는 경우는 언제인가요? 딱 1글자만 입력받고 출력할때 사용하는 것만은 또 아닌 것 같은데 언제 사용하는 게 좋은가요? 강사님은 두개를 자유롭게 혼용해서 사용하시던데 기준이 궁금합니다...
-
미해결홍정모의 따라하며 배우는 C언어
8.5강 5분 5초 질문있습니다. getchar을 scanf로 바꿔도 되나요?
while ( c = getchar() != '\n' ) 부분을 getchar 말고 scanf 써도 되나요?? scanf가 더 큰 포함관계라고 생각하는데 넣어도 상관없나요?
-
미해결
for 문을 두개 이상쓰고 else if를 쓰면 안되나요?
if (m == 'L') for (o = 1; o < i; o++) printf(" "); for (j = 1; j <= s; j++) printf("*"); else if(m == 'R') for (k = 1; k <= n-i; k++) { printf(" "); } for (p = 1; p <= s; p++) { printf("*"); } printf("\n") 저기서 왜 for 문을 두개 이상쓰고 else if를 사용하면 안되는걸까요..ㅜㅜ
-
미해결
C언어에서 선언만 하고 할당을 안하면???
예를 들어 1) int i; 2) int i = 0; 이 두개가 다르더라구요... 근데 만약에 저 코드 뒤에 scanf("%d", &i); 이런식으로 i에 값을 입력해줄 예정일지라도 꼭 2번처럼 0을 넣어줘야 하나요?? 아래 예시 코드에 answer = 0을 안해주면 실행자체가 안되네요... answer가 초기화되지 않은 메모리를 쓴다고 에러가 나오고요... 비록 쓰레기값이지만 i를 선언해줬고, 그 쓰레기값을 대체하는 입력값이 뒤에 있는데도 왜 실행이 안되는거죠?? const int password = 4545; int answer; while (answer != password) { printf("enter secret code : "); scanf("%d", &answer); } printf("good!");
-
미해결
반복문안에서 scanf의 쓰임을 잘모르겠습니다!!
#include<stdio.h> int main(void) { int i,n, a,max=0; scanf("%d\n", &n); for (i = 1; i<=n; i++) { scanf("%d", &a); if (a > max) max = a; } printf("%d", max); return 0; } 여기서 반복문안에 scanf가 들어가있으면 계속해서 무언가를 입력해야 되는거 아닌가요?? 최대값을 구하는 문제인데 왜 저렇게 구하는지 모르겠어요..ㅜ
-
미해결홍정모의 따라하며 배우는 C언어
while문이 안돌아가는 이유가 궁금합니다...
전혀 코드에는 문제가 없어보이는데 왜 while문에 안들어가는거죠?
-
미해결
float는 4바이트? 8바이트?
float가 4바이트지만 오류발생? 등을 방지하기 위해 8바이트에 넣는다고 하셨는데, 이게 float도 8바이트에 넣는 "경향"이 있는 건가요 아니면 8바이트로 바꾸도록 처음부터 설계되어있는 건가요?
-
미해결
비주얼 스튜디오 X86이랑 X64 뭘로 해놓고 공부해야하나요?
강의에서 X64 추세로 간다고 하셨는데 제 VS는 X86으로 돼있네요.. 64로 바꿔놓고 공부하는게 좋을까요??
-
미해결
3.14f 같은거?
3.141592f 처럼 뒤에 f를 꼭 붙이시던데 처음 봐서 질문 드립니다... 어떤 의미에서 사용하고, 왜 붙여주는 거죠? 무조건 붙여줘야하나요..? 흔하게 안쓰는 것 같아서요..