00a46 N개의 문자열 출력하기 1
질의 응답 코너입니다.
문자열 처리는 사실 쉽지 않습니다. 왜냐하면 메모리 주소와 관련되어있기 때문입니다.
이에 대한 자세한 내용은 다음 기회에 이야기하는 것으로 하구요.
현재 코드 상의 문제점은 마지막 printf 문에 있네요. p[i]는 p 문자열의 i번째 '문자'를 의미합니다. 따라서 입출력 제어문자는 %c 이어야 합니다.
안녕하세요 저번에 답변해주신것이 도움되었습니다. 제가 테스트할때는 답이 잘 나오는 데 채점할때는 이상합니다.
죄송하지만 다시한번 도움부탁드립니다.
#include <stdio.h>
#include<string.h>
int main()
{
int a = 0, i = 0, len=0;
char p[1100];
scanf("%d\n",&a);
//scanf("%s",p);
gets(p);
len = strlen(p);
//printf("%d , (%s)", len, p);
//return 0;
for (i = 0; i < len; i++)
{
if (p[i] != ' '){ printf("%c", p[i]); }
else if (p[i] == ' '){ printf("\n"); }
}
}
00a46 문제를 푼후에 local PC에서 실행을 하면 맞게 나옵니다. 근데 코드 제출을 하면 Line 8에서 제출이 없다고 나오고 있습니다. 체점기에 오류가 있는게 없을지요?
--------------------------------------------
안녕하세요. 한가지 더 문의 합니다. 이번에는 제가 gets()를 이용하여 제가 다시코드를 만들어봤는데
아래의코드대로 gets() 함수를 쓰면안되는지 의문이 있어 질문 드립니다.
--------------------------------------------------------
//http://www.jynote.net/604
#include<stdio.h>
#include<string.h>
int main()
{
int i=0,len=0;
char a[100];
gets(a);
for(i=0; a[i] != '\0'; i++)
{
if(a[i]!=' ')
{
a[i]='\n';
}
}
printf("%s",a);
return 0;
}
-------------------------------------------------------
아래와 같이 입력하고 제출을 눌렀더니
20번째 케이스(입력 데이터)에서 '접근 위반' 이라고 나옵니다.
'접근 위반' 이 뭔가요..?
-----------------------------------------------------------------------
#include <cstdio>
char arr[10000];
int main()
{
int n, i=0;
scanf("%d\n", &n);
gets(arr);
while(arr[i] != 0)
{
if(arr[i]==32)
{
printf("\n");
}
else
{
printf("%c", arr[i]);
}
i++;
}
return 0;
}
안녕하세요 제가 이 문제를 풀다 일단 입력한 문자열을 그대로 출력하는코드를 짜고 실행 해봤습니다. 그런데 잘못된 답이 아닌 실행오류라는것을 이유를 몰라 고민중입나다. 아래의코드를 보시고 도움부탁드립니다.
|
|
|
|
|
|
|
|
#include <stdio.h> <---------------------------------------------------------------|
#include<string.h>
int main()
{
int a = 0, i = 0, len=0;
char p[500];
scanf("%d",&a);
scanf("%s",p);
len = strlen(p);
for (i = 0; i < len; i++)
{
printf("%s",p[i]);
}
}