2014-10-19 1 views
-4

이것은 고유 한 삼각형이며 공백으로 구분 된 단어를 인쇄하는 방식으로 다른 모든 삼각형과 다릅니다. 다른 질문에는 내가 찾고있는 답변이 없습니다. 이미 확인 했어.구분 기호로 공백이있는 문자열 삼각형 C 언어 지연

출력이

이 문제는이 이것이 가장 좋은 방법
입니다 최고의

입니다
인이
과 같아야 이것이다
하는 가장 좋은 방법이
이 지출하는 가장 좋은 방법입니다 시간을

을 보낼 수있는 가장 좋은 방법은 지금까지 내가 가지고있는 코드는이 출력을 생성

#include <stdio.h> 

int main() 
{ 

    char msg[]="this is the best way to spend time for reedaf"; 
    int inn=1, out, i=0, max; 
    max=(sizeof(msg)/sizeof(int))+1; 
    char *output; 
    char *spc=" "; 
     output=strtok(msg,spc); 
    for(out=1;out<max;out++){ 

     for(i=0;i<out && output != NULL ;i++){ 

     printf("%s ", output); 
     output=strtok(NULL,spc); 

      } 

    printf("\n"); 

    } 
    return 0; 
} 

입니다


그래서 나는 마음

내가 배열의 시작 단어로 각 라인을 시작해야

의 평화를 찾을 수 없습니다 좀 도와주세요

reedaf

에 대한
가장 좋은 방법
에 지출 시간이다. 다음 줄은 배열의 시작 단어와 다음 단어로 시작해야합니다. 다음 줄은 다시 배열의 시작 단어로 시작하고 다음 단어와 다음 단어로 시작해야합니다.

휴식을 이용하십시오. 또는 memcpy

+1

코드를 올바르게 포맷하고 실제 문제가 무엇인지 설명해 주시겠습니까? – thumbmunkeys

답변

2

영업 이익의 사용은 필요에 따라 문자열을 복원, 단순히 문자열을 아래로 행진하지 않습니다.

다음은 후보 단순화입니다.

void printTri(char *s) { 
    for (size_t i = 0; s[i]; i++) { 
    if (s[i] == ' ') { 
     s[i] = '\0'; 
     puts(s); 
     s[i] = ' '; 
    } 
    } 
    puts(s); 
} 

int main(void) { 
    char msg[] = "this is the best way to spend time for reedaf"; 
    printTri(msg); 
    return 0; 
} 
+0

thankyou 선생님, 내가보기에는 size_t thats를 모두 제거해야하며 코드는 완벽하게 작동합니다. – deeraf

+0

오, 그래, 당신도 내가 변수를 선언해야합니다 – deeraf

+0

당신은 size_t를 제거하고 루프에 대한 첫 번째 직전에 "i"변수를 선언해야하고 코드가 작동합니다. – deeraf

1

코드에서 수행 한 작업에 대해 확실하지 않지만 요청한 결과를이 코드에서 얻을 수 있습니다. strtok()

#include<stdio.h> 
#include<string.h> 

int main() 
{ 
char str[]="this is the best way to spend time for reedaf",ch=' ',c='$'; 
int n=0,x,i,j; 
x=strlen(str); 
for(i=0;i<x;i++) 
{ 
    if(str[i]==ch) 
     n++; 
} 
for(i=0;i<n+1;i++) 
{ 
    for(j=0;j<x;j++) 
    { 
     if(str[j]==ch) 
     { 
      str[j]=c; 
      break; 
     } 
     else 
     { 
      if(str[j]==c) 
       printf("%c",ch); 
      else 
       printf("%c",str[j]); 
     } 
    } 
    printf("\n"); 
} 
return 0; 
} 
+1

당신은'break'를 사용했습니다. 그리고 어떤 이유로 OP는 그것을 좋아하지 않습니다. – usr2564301

+0

감사하지만 break를 사용하지 않고이 작업을 수행 할 수 있습니까? ? 제발 제발 – deeraf

+0

제발 @ breaker 진술을하지 않고 그것을 원한다면 다음 달러 기호 대신 null 문자를 사용하십시오. 희망이 그 수도 있습니다. –