2014-10-19 41 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

所以請幫助我,我無法找到心靈

我要開始每一行與陣列中的起始字的和平。那麼下一行應該從數組中的起始字開始,然後是下一個字。那麼下一行應該再次從數組中的起始字開始,然後是下一個字,然後是下一個字。以此類推。

請嘗試不使用break;或者memcpy

+1

你會正確地格式化你的代碼,並且關心解釋實際問題是什麼? – thumbmunkeys 2014-10-19 14:24:33

回答

2

OP的使用strtok()不會根據需要恢復字符串,只是簡單地將字符串游走。

Follows是一個候選簡化。

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

謝謝你,先生,只有我看到你必須刪除size_t這就是所有和代碼完美的作品。 – deeraf 2014-10-20 05:31:13

+0

噢,你必須聲明我的變量 – deeraf 2014-10-20 05:34:26

+0

你必須刪除size_t並在第一個for循環之前聲明「i」變量並且代碼有效,謝謝 – deeraf 2014-10-20 05:38:18

1

我不完全確定你在代碼中做了什麼,但是你要求的輸出可以通過這段代碼獲得。

#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 2014-10-19 15:50:18

+0

謝謝,但你可以做到這一點,而不使用休息; ?請請 – deeraf 2014-10-19 15:50:29

+0

@deeraf如果你真的想要它沒有斷言,然後使用空字符,而不是美元符號,希望可能工作。 – 2014-10-23 10:31:28

相關問題