2016-09-26 3 views
-3
#include <stdio.h> 
#include <string.h> 

char name[24]; 

int main(void) 
{ 
    printf("Type the name of a cartoon character."); 
    printf(">>> "); 
    scanf_s("%s", name); 

    printf("\n\nCharacter name: %s", name); 
    return 0; 
} 

인쇄하려면이 문제가 발생합니다. 나는 컴파일러가 나에게 어떤 에러도주지 않기 때문에 상황이 잘못되고 있는지 정확히 알지 못한다. 그러나 프로그램을 실행할 때 중단 오류가 발생합니다. 어떤 도움을 주시면 감사하겠습니다. 감사.인쇄 배열 끊기 오류

+3

'scanf_s '의 맨 페이지를 읽는 것이 도움이되었을 것입니다 ... 항상 사용하는 함수의 문서를 읽으십시오! 그리고 모든 권장 경고를 활성화하십시오! 절반 방법 현대 컴파일러 경고한다. – Olaf

+0

Visual Studio에서 scanf로만 프로그램을 실행할 수 없으므로 scanf_s를 사용합니다. 이 문제를 해결할 수있는 방법이 있습니까? –

+1

예 : 올바르게 사용하십시오! 나머지는 : 제 1 의견을보십시오. – Olaf

답변

-1

귀하의 스캔 기능이 잘못되었다고 생각됩니다. C에서 일하는 경우 scanf()이어야합니다.

배열 인쇄는 C에서 어렵습니다. 배열의 모든 요소를 ​​반복하여 인쇄해야합니다.

그래서 : 나를 도와 시도하는 모든 사람 덕분에

for(x ; i < n ; i++){ 
    printf("Element is: %s" , name[i]) 
} 
+0

'scanf_s'는 선택적 경계 검사 인터페이스의 일부입니다. 그럼에도 불구하고 그것은 표준의 일부입니다. 그리고 OP 분명히 배열 배열이 없습니다 resp. 배열에 대한 포인터의 배열. – Olaf

+0

문자 배열을 반복하여 문자열을 인쇄 하시겠습니까? 전혀 없으면 자리 표시자는 % c가 아니라 % s이됩니다. scanf_s는 버퍼 경계를 검사하는 추가 기능입니다. –

+0

예 문자열 배열에 % s를 사용한 이유가 무엇이든 % C 문자 배열을 필요로합니다. –

0

내가 원하는. 나는 조금 떨어져서 발걸음을 돌리고 난 후에 의미가없는 무엇인가 알아 차렸다. 이 코드를 제공해 주셔서 감사합니다 :

이렇게하면 MSVC가 scanf_s를 원하기 때문에 scanf를 사용할 수있게되었습니다. 이것은 작동 코드입니다.

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 

char question(void); 
char name[24]; 

char main(void) 
{ 
    question(); 
    system("pause"); 
} 

char question(void) 
{ 
    printf("Type the name of a cartoon character >>> "); 
    scanf("%s", name); 

    printf("\n\"%23s\"\n\n\n", name); 

    return 0; 
} 

원래 char 대신 char이 int로 사용되었습니다. 왜 MSVC가 나에게 논쟁을 던지지 않았는지 확실하지 않지만 두 가지의 차이를 완전히 무시했습니다.