回 帖 发 新 帖 刷新版面

主题:[讨论]大侠们帮我看下这段while循环哪里出问题了,多谢。

高手们帮我看下这段代码,我是先把输入的字符串里的标点符号变成空格,然后计算空格的数量,但是运行不成功,运行后只能输出替换后的字符串,然后按任意键都没有反应了,不知道是while循环哪里出问题了。
[color=FF0000]int main(void)
{
    char text[LENGTH];
    int i=0;
    int j=0;
    printf("\nEnter the paragraph(less than 10000 characters):\n");
    gets(text);
    while(text[i]!='\0')
        ispunct(text[i])?text[i++]=' ':i++;
    printf("\n%s\n",text);
    
    i=0;

    while(text[i]!='\0');
    {
        if(int (text[i++])==32)
           j++;
        else
            i++;
    }

    printf("%d",j);

    return 0;
}[/color]



回复列表 (共4个回复)

沙发

while(text[i]!='\0');

板凳

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

#define LENGTH 1000

int main()
{
    char text[LENGTH];
    memset(text,'\0',sizeof(text));
    int i=0;
    int j=0;
    printf("\nEnter the paragraph(less than 10000 characters):\n");
    gets(text);
    while(text[i]!='\0')
        ispunct(text[i])?((text[i]=' ')&&j++):i++;
    printf("\n%s  %d\n",text,j);
    return 0;
}

3 楼

[quote]while(text[i]!='\0');[/quote]

谢谢了,老犯这种小错误

还有问下如果我想从键盘输入一篇文章,有好几个段落,该怎么用gets,因为这些函数都是只要输入回车就停止输入,只能输入一段。

4 楼

#include <stdio.h>
#include <ctype.h>
#include <conio.h>

#define MaxLen 10000
void main()
{
    char text[MaxLen],c;
    int i = 0, j = 0;
    
    printf("Enter the paragraph(less than %d characters):\n",MaxLen);
    
    while(1)
    {
        c = getche();
        if(c == 27)        //按下ESC键退出输入数据
        {
            text[i] = '\0';
            break;
        }

        if(i == MaxLen-1)
        {
            printf("\n\n\nWarning:Overflow!\n");
            text[i] = '\0';
            break;
        }

        if(c == 13)
        {
            c = '\n';
            printf("\n");
            text[i++] = c;
            continue;
        }

        if(c == ' ')
        {
            j++;
        }

        if(ispunct(c))
        {
            c = ' ';
            j++;
        }

        text[i++] = c;
    }

    printf("\n%s\n",text);
    printf("Length=%d\tSpace=%d\n",i,j);

    while(1)    
    {
        getch();
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册