鱼C论坛

 找回密码
 立即注册
查看: 2221|回复: 3

[已解决]数组

[复制链接]
发表于 2022-11-21 21:07:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

#define MAX 21
int main()
{
    int space, i = 0;
    char str[MAX];

    printf("请输入一行文本是:");
    while ((str[i++] = getchar()) != '\n')
    {
        /*
        if (i >= MAX) // Q:当输入大于21字符时,不会获取‘\n’
        {
            break;
        }
        */
        if (str[i] == ' ' && i <= MAX) //记录空格位置
        {
            space = i;
        }
    };
    printf("%d\n", i);

    if (i >= MAX - 1) //当输入字符大于21时,使结尾断在离21最近的空格
    {
        str[space] = '\0';
    }

    if (i <= MAX) //当输入字符少于21时,可以正常输出
    {
        str[i + 1] = '\0';
    }

    printf("你输入的文本是:%s\n", str);

    return 0;
}


问题1:当输入字符少于21时,输出会多出一行
eg:请输入一行文本是:fdssdfa
8
你输入的文本是:fdssdfa
&#65533;


问题2:当输入大于21字符时,输出不了
@Twilight6 @风车呼呼呼 @jackz007
最佳答案
2022-11-21 21:17:05
本帖最后由 jackz007 于 2022-11-21 22:14 编辑

        你的代码不完整,能不能把你的代码贴入代码框?
#include <stdio.h>

#define MAX 21

int main()
{
        int space , i , n                                                ;
        char str[MAX]                                                    ;
        printf("请输入一行文本是:")                                     ;
        for(n = 0 ; (str[n] = getchar()) != '\n' && n < MAX - 1 ; n ++)  ;
        for(; n && str[n - 1] == ' ' ; n --) str[n - 1] = '\0'           ;
        str[n] = '\0'                                                    ;
        if(n == MAX - 1) {
                for(i = n ; i && str[i - 1] != ' ' ; i --)               ;
                if(i) str[i - 1] = '\0'                                  ;
        }
        printf("  你输入的文本是:%s\n" , str)                           ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-21 21:17:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-11-21 22:14 编辑

        你的代码不完整,能不能把你的代码贴入代码框?
#include <stdio.h>

#define MAX 21

int main()
{
        int space , i , n                                                ;
        char str[MAX]                                                    ;
        printf("请输入一行文本是:")                                     ;
        for(n = 0 ; (str[n] = getchar()) != '\n' && n < MAX - 1 ; n ++)  ;
        for(; n && str[n - 1] == ' ' ; n --) str[n - 1] = '\0'           ;
        str[n] = '\0'                                                    ;
        if(n == MAX - 1) {
                for(i = n ; i && str[i - 1] != ' ' ; i --)               ;
                if(i) str[i - 1] = '\0'                                  ;
        }
        printf("  你输入的文本是:%s\n" , str)                           ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-11-21 21:59:10 | 显示全部楼层
jackz007 发表于 2022-11-21 21:17
你的代码不完整,能不能把你的代码贴入代码框?

这就是全部的代码呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-21 22:12:42 | 显示全部楼层
Weabu 发表于 2022-11-21 21:59
这就是全部的代码呀

        看看你贴出的代码,斜体部分就是 [ i ] 被吞噬后把 [ i ] 作为斜体指令给过滤掉了。
        2 楼给出了修改后的代码,你可以试试看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-20 18:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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