镜水不emo 2022-09-25 19:31 采纳率: 100%
浏览 70
已结题

关于c语言指针数组问题 输出烫(中文字符) -倒序输出单词的问题

关于c语言指针数组的题目输出烫tangtang(中文字符)

今天在写c primer plus第十一章11.13的时候遇到了一道习题 ,一直没有解决。(环境是 VS2022)

__13.编写一个程序,反序显示命令行参数的单词。例如,命令行参数是
see you later,该程序应打印later you see。

然后我写的代码如下
(这里主要是想要用输入输出来实现,没有用命令行参数orz)

#define SIZE_13_1 50 
#define SIZE_13_2 10
int get_words(char(*string)[SIZE_13_2], char** str, int n) {
    int i = 0,j = 0 ;
    bool inword = false;
    char ch;
    printf("Please enter no more than 49 words and each word is no more than 9 characters:\n");
    while ((ch = getchar()) != EOF && i < n) {
        if (!isspace(ch) && !inword) {
            *(*(string + i) + j) = ch;
            j++;
            inword = true;
        }
        else if (!isspace(ch) && inword) {
            *(*(string + i) + j) = ch;
            j++;
        }
        else if (isspace(ch) && inword) {
            *(*(string + i) + j) = '\0';
            str[i] = string[i];
            i++;
            inword = false;
        }
    }
    str[i] = '\0';
    return i -1;
}

//输出words时候 在前面出现 烫tangtang
int ex1113(void) {
    char string[SIZE_13_1][SIZE_13_2];
    char* str[SIZE_13_1];
    int n;
    int j;
    n = get_words(string,str,SIZE_13_1);
    for(j=n;j>=0;j--)
        printf(str[j]);
    putchar('\n');
}

int main(void) {
    ex1113();
    return 0;
}

运行结果及报错内容

img


在每一个单词的前面又出现了烫tangtang,而且输出第一个单词的第一个字母也会被汉字代替
在输入很多个单词的时候,还会有一些单词消失

请教各位orz 应该怎么改一下可以实现单词的倒序输出啊 T T

  • 写回答

2条回答 默认 最新

  • 镜水不emo 2022-09-26 18:23
    关注
    
    while ((ch = getchar()) != EOF && i < n) {
            if (!isspace(ch) && !inword) {
                j = 0;//问题在于没有初始化
                *(*(string + i) + j) = ch;
                j++;
                inword = true;
            }
            else if (!isspace(ch) && inword) {
                *(*(string + i) + j) = ch;
                j++;
            }
            else if (isspace(ch) && inword) {
                *(*(string + i) + j) = '\0';
                str[i] = string[i];
                i++;
                inword = false;
            }
        }
    
    

    今天在好友的帮助下改好了
    报错的烫烫烫看起来是递增的,可以发现是初始化的问题

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 已采纳回答 9月26日
  • 创建了问题 9月25日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料