在 C 中获取后缀

Get suffixes in C

我正在尝试获取输入字符串的后缀,但我正在获取前缀我该如何修复它?

例如输入字符串 "Hello" 的预期结果是:

Hello 
ello
ell
el
e

现在回归:

Hello
Hell
Hel
He
H

谢谢

#include <errno.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **suffix;

void panic(char *m) {
  fprintf(stderr, "%s\n", m);
  exit(0);
}

int main(int argc, char *argv[]) {
  int n, i;

  if (argc != 2)
    panic("wrong parameters");

  n = strlen(argv[1]);

  suffix = (char **)malloc(n * sizeof(char *));

  if (suffix == NULL)
    error("Memoria no disponible");

  for (i = 0; i < n; ++i) {
    suffix[i] = (char *)malloc((n + 1 - i) * sizeof(char));
    if (suffix[i] == NULL)
      error("Memoria no disponible");

    sprintf(suffix[i], "%s", argv[1]);
    argv[1][n - 1 - i] = '[=12=]';
  }

  for (i = 0; i < n; i++) {
    printf("%d %s\n", i, suffix[i]);
  }

  return 0;
}

只需替换这两个语句

sprintf(suffix[i], "%s", argv[1]);
argv[1][n - 1 - i] = '[=10=]';

对于这一个声明

sprintf(suffix[i], "%s", argv[1] + i );

使用莫斯科的 Vlad 答案。

你现在应该相关的东西,只读argcargv,不要覆盖它们。虽然理论上你可以这样做,但实际上它既无用又危险。

应始终保持 code/logic 尽可能简单。

可以使用 <ctrl-c> and/or EOF

停止以下提议的代码
#include <stdio.h>
#include <string.h>

int main( void )
{
    char buffer[ 256 ];

    // get the string
    while( fgets( buffer, sizeof( buffer ), stdin ) )
    {
        //output string, dropping leading char at each loop iteration
        size_t length = strlen( buffer );

        for( size_t i=0; i<length; i++ )
        {
            printf( "%s\n", &buffer[i] );
        }
    }
}

这里是一个典型的运行程序:

注意:第一行是用户输入的字符串。

this is a string
this is a string

his is a string

is is a string

s is a string

 is a string

is a string

s a string

 a string

a string

 string

string

tring

ring

ing

ng

g