VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 843|回复: 3

发现一个问题。。希望个告诉解答啊。

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-18 05:40:01 | 显示全部楼层 |阅读模式
我写了一段RLE的代码。。功能就是。。输入一段字符串。。。在这些字符串中凡是重复次数超过3的就用N¥T其中N表示重复次数。¥表示控制符代表这里是重复了的。T表示被重复的字符。其他的都直接输出。

代码如下。
#include <stdio.h>
#include <string.h>
void main()
{
    char code[100];
    int repcount=0,i,j ;
    printf("please input the code:\n");
    scanf("%100s",code);
    puts(code);
    for(i=0;code[i]!='\0';i++)
    {
        if(code[i]!=code[i+1]&&repcount<1)
        printf("%c",&code[i]);
        else
        {
            if(code[i]==code[i+1])
            repcount++;
            else
            {
                if(repcount>=4)
                {
                    printf("%d$%c",&repcount,&code[i]);
                    repcount=0 ;
                }
                else
                {
                    for(j=0;j<repcount;j++)
                    printf("%c",&code[i]);
                    repcount=0 ;
                }
            }
            
        }
    }
    getch();
}

编译后。。运行。。得到的结果都是乱码。。

我直接用FOR控制。。把数组code 中的每个元素直接输出。发现也是乱码。。这就说明我用PRINTF 输出是有问题的。。而我用puts(code)却是可以正常输出的。。。有人告诉我是什么回事么。。

另外我要写一个 VFW(VIDEO FOR WINDOWS)下的视频显示程序。。我这里有参考代码。。但是我不知道在C中使用。。有没有人告诉我一下。在C中怎么样用API  新手,没有WINDOWS下编程经验。。望各位前辈指点一二。
回复

使用道具 举报

0

主题

78

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-1-25 18:45:01 | 显示全部楼层
把 printf 参数中的 取地址 符号 & 去掉
回复

使用道具 举报

0

主题

78

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-1-25 20:09:01 | 显示全部楼层
好像逻辑也有点问题, 修改了一下:
当重复超过3次(不包括3次),
输出 重复性 结果:

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

int main()
{
    char code[100];
    int repcount=0,i,j ;
    printf("please input the code:\n");
    scanf("%100s",code);
    puts(code);
    for(i=0;code[i]!='\0';i++)
    {
        if(code[i]!=code[i+1]&&repcount<1)
                printf("%c\n",code[i]);
        else
        {
            if(code[i]==code[i+1])
                    repcount++;
            else
            {
                if(repcount>=3)
                {
                    printf("%d$%c\n",repcount+1,code[i]);
                    repcount=0 ;
                }
                else
                {
                    for(j=0;j<=repcount;j++)
                            printf("%c",code[i]);
                        printf("\n");
                    repcount=0 ;
                }
            }
            
        }
    }


    system("PAUSE");
    return 0;
}
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-26 15:18:01 | 显示全部楼层
谢谢你们的回复。。是我大意了。。。这个都没有注意。。呵呵。。。逻辑是有点问题。。我忘了。。。因为一测试就有问题。。所以就没有去考虑逻辑的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表