镜子中的你 2020-10-17 21:50 采纳率: 0%
浏览 28

奇怪的错误,也不知道错在哪里。

这段代码在dev++上可以运行,再eclipse上却有问题。比如我依次输入hello world see you later就崩溃了。不知道为什么,请大神不吝指教。谢谢

```

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

void str_toupper(char s[])     //把字符串变大写
{
    int i = 0;
    while (s[i]){
        s[i] = toupper(s[i]);
        i++;
    }
}

void put_strary(const char s[][128], int n)   //显示字符串数组
{
    int i;
    for (i=0; i<n; i++){
        int j=0;
        printf("str[%d] = \"", i);

        while (s[i][j])
            putchar(s[i][j++]);
        puts("\"");
    }
}

int main(void) {
    setvbuf(stdout, NULL,_IONBF,0);
    char str[][128] = {" "};
    int i = 0;
    int j = 0;
    int k = 0;
    do {                                           //限制输入5次
        printf("请输入字符串:");
        scanf("%s", str[j]);
        j++;
    } while (j<5);

    put_strary(str, j);
    printf("%s\n", str[4]);               //检查一下是否正常显示最后一个字符串
        for (k=0; k<5; k++)
    printf("%c\n", str[4][k]);            //打印最后一个字符串的每个字母

    printf("大写字母是:");
    for (i=0; i<j; i++){
        str_toupper(str[i]);
        printf("%s ", str[i]);
        }

    return 0;
}
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 03:00
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    #include <stdio.h>
    #include <ctype.h>
    
    // 大小写转换函数
    char* toUpper(char* str) {
        while (*str != '\0') {
            *str = toupper(*str);
            str++;
        }
        return str;
    }
    
    void printStringArray(const char* arr[], int size) {
        for (int i = 0; i < size; ++i) {
            printf("str[%d] = \"%s\";\n", i, arr[i]);
        }
    }
    
    int main() {
        setvbuf(stdout, NULL, _IONBF, 0);
        char str[] = "hello world see you later";
        int i = 0;
        int j = 0;
        int k = 0;
        do {                                           // 限制输入5次
            printf("请输入字符串:");
            fgets(str, sizeof(str), stdin);          // 使用fgets读取多行输入
            str[sizeof(str) - 1] = '\0';             // 删除末尾的换行符
            j = 0;
            k = 0;
    
            // 将字符串中的所有字符都转换为大写
            while (str[j]) {
                if (!isalpha(str[j])) {
                    str[k++] = ' ';
                } else {
                    str[k++] = toupper(str[j++]);
                }
            }
            str[k] = '\0';
    
            // 打印转换后的字符串
            printf("str[%d] = \"%s\";\n", j, str);
    
            // 检查最后一次输出的字符串是否正确
            for (i = 0; i < j; ++i) {
                printf("str[%d] = \"%s\";\n", i, str);
            }
        } while (fgets(str, sizeof(str), stdin));
    
        // 输出大写的最后四个字符
        printf("大写字母是:");
        for (i = 0; i < j && i <= 3; ++i) {
            str_toupper(&str[i]);
            printf("%c ", str[i]);
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 gojs 点击按钮node的position位置进行改变,再次点击回到原来的位置
  • ¥15 计算决策面并仿真附上结果
  • ¥20 halcon 图像拼接
  • ¥15 webstorm上开发的vue3+vite5+typeScript打包时报错
  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥100 求ASMedia ASM1184e & ASM1187e 芯片datasheet/规格书
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么