【问题标题】:I need to get the letter from a word我需要从一个词中得到这封信
【发布时间】:2014-09-28 07:20:37
【问题描述】:

我尝试了这段代码,但在 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);

            }
}

示例输出:

>>输入单词:程序

>> 米

>>上午

>> 内存

>> 克

>> 克

>> 罗格

【问题讨论】:

标签: c arrays string character letter


【解决方案1】:

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

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

【讨论】:

  • 谢谢老兄...我在最后一步卡住了...不知道如何管理那个东西...非常感谢!
【解决方案2】:

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 &lt; 0

建议:

不要使用void main(……)。使用int main(…)。并非所有编译器都支持前者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多