c - 在 C 中处理数组时出现的问题

标签 c

我试图了解如何在 C 语言中正确使用数组,并尝试编写一个简单的程序,该程序应该采用 5 整数数组并消除左侧的零。这是我的尝试:

#include <stdio.h>

int main() {
    int seq[5];
    int i;
    int cor[5];
    int counter;
    printf("Type the 5 numbers: ");
    scanf("%s", &seq);
    for (i=0; i<5; i++){

        if (seq[i] != 0) {
            for (counter=0; counter<5-i; counter++){
                cor[counter]=seq[i+counter];
            }
            break;
        }
    }
    printf("%s", cor);
    return 0;
}

当时的想法是,当输入诸如 00101 之类的内容时,程序会查看每个条目并检查它是否为 0。如果不是,它会在位置 i 写入一个新数组,其中 0 -th 位置被赋予原始数组 i 的值,第 1 个位置将被赋予 i+1 的值等等,然后它会打印这个新数组,它的左边应该没有无用的零.但它只是打印原始数组。怎么了?很抱歉初学者的问题。

最佳答案

你有两种方法来做你想做的事。

  1. 使用字符:

    #include <stdio.h>
    
    int main() {
        char seq[6]; /* reserve one place for terminating null */
        int i;
        char cor[5];
        int counter;
        printf("Type the 5 digits : ");
        scanf("%5s", seq); /* limit to 5 chars and seq is already an array : ne & */
        for (i=0; i<5; i++){
            /* should control seq[i] >= '0' && seq[i] <= '9' */
            if (seq[i] != '0') {
                for (counter=0; counter<6-i; counter++){ /* also copy terminating null */
                    cor[counter]=seq[i+counter];
                }
                break;
            }
        }
        printf("%s", cor);
        return 0;
    }
    

    但是用户可以给你不是数字的字符。

  2. 使用整数:

    #include <stdio.h>
    
    int main() {
        int seq[5];
        int i;
        int cor[5];
        int counter;
        printf("Type the 5 numbers: ");
        i = scanf("%d%d%d%d%d", seq, seq+1, seq+2, seq+3, seq+4); /* seq+i = &(seq[i]) */
        /* should control i == 5 */
        for (i=0; i<5; i++){
    
            if (seq[i] != 0) {
                for (counter=0; counter<5-i; counter++){
                    cor[counter]=seq[i+counter];
                }
                break;
            }
        }
        printf("%d%d%d%d%d", cor[0], cor[1], cor[2], cor[3], cor[4]);
        return 0;
    }
    

关于c - 在 C 中处理数组时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26886172/

相关文章:

c - 在 C 中打印一个非常大的整数

c - for循环中的if语句 - 无限循环

python - 使用cython将numpy数组列表传递给C

c - 用 getdelim 填充二维数组,在循环内工作但不在循环外

c - C 中查找子字符串

c++ - 获取磁盘转速示例代码

c - Epoll vs Libevent for Bittorrent like application

c - 停止当前从中断处理程序运行的函数

Python 无法使用 Python 的 ctypes 读取包含 char 数组的结构

C:下标值既不是数组也不是指针