我需要从一个单词中得到这封信

时间:2014-08-05 14:58:45

标签: c arrays string character letter

我尝试了这段代码,但是在for循环中似乎什么也没做。

#include <stdio.h>
#include <stdlib.h>

void main()
{

    char word[100];
    char suf [100];
    int i,j,k = 0;
    char a [100];

    printf("Enter the word: \n");
    gets(word);
    printf("\n");



    for (i = strlen(word); i < 0; i--)
            {
                 a[i] = word[i];
                 printf("%s",a);

            }
}

示例输出:

  

&GT;&GT;输入单词:Program

     

&GT;&GT;米

     

&GT;&GT;是

     

&GT;&GT; RAM

     

&GT;&GT;克

     

&GT;&GT; ogram

     

&GT;&GT; rogram

2 个答案:

答案 0 :(得分:1)

使用指针算法可能是最简单的方法;你甚至不需要一个临时缓冲区:

for (i = strlen(word) - 1; i > 0; --i) {
    printf("%s\n", word + i);
}

答案 1 :(得分:1)

ALTERNATIVE :使用指针方法:

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

int main(int argc, const char * argv[])
{
    char word[100];

    printf("Enter the word: \n");
    gets(word);
    printf("\n");
    char *ptr;
    int len = (int)strlen(word) ;

    for (int i = len -1; i > 0; --i)
    {
        ptr = &word[i];
        printf("%s\n",ptr);

    }
    return 0;
}

说明:

假设您输入的字符串为program 现在,索引的范围从0到6,而不是7。 在您的代码中,您从i = strlen(word)开始,这是错误的。您应该从i = strlen(word) -1开始。

此外,您应该递减,直到i的值大于0 - 不小于i < 0

建议:

请勿使用void main(……)。使用int main(…)。所有编制者都可能不支持前者。