c - 以空格为分隔符的字符串三角形C语言

标签 c string space delimiter

这是一个独特的三角形,与所有其他三角形不同,它打印用空格分隔的单词。我正在寻找的答案在我已经检查过的任何其他问题中都不存在。

输出应该是这样的

这是
这是
这是
这是最好的
这是最好的方式
这是最好的方式
这是最好的消磨方式
这是最好的消磨时间的方式

到目前为止我的代码是

#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;
}

这会生成此输出

这是

花时间在芦苇上的最佳方式

所以请帮助我,我无法找到内心的平静

我需要以数组中的起始单词开始每一行。那么下一行应该从数组中的起始单词开始,然后是下一个单词。那么下一行应该再次从数组中的起始单词开始,然后是下一个单词,然后是下一个单词。依此类推。

请尽量不要使用break;或memcpy

最佳答案

OP 使用 strtok() 不会根据需要恢复字符串,而只是沿着字符串前进。

下面是候选简化。

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;
}

关于c - 以空格为分隔符的字符串三角形C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451455/

相关文章:

c# - 按最后一次出现的字符拆分字符串的最佳方法?

android - 如何在 TextView 中的文本之间留出空间?

flutter - 如何摆脱 appbar 和 tabbar 之间的空间?

c - token to unsigned printing odd 值

java - 为什么没有 String 的原始类型?

c - 在 Valgrind 中读取无效

java - 删除句子内的括号并分隔字符串

css - 如何调整 <a> 和 <p> 之间的空间

c# - 一种语言将 undefined 评估为等于 false 是否很常见?如果是这样,为什么这样做?

c++ - 如果使用无符号整数,通过减去 1 将基于 1 的编号转换为基于 0 的编号是否安全?