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

相关问题