我试图理解如何在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处被赋予原始数组的值,第i个位置将被赋予i + 1处的值,依此类推,然后它将打印这个新数组,该数组在左边没有任何无用的零。但它只是打印原始数组。怎么了?对于begginner的问题,我们深表歉意。
答案 0 :(得分:1)
您不能将字符串存储在整数数组中。您必须在字符数组中存储字符串。
答案 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;
}
但是用户可以给你不是数字的字符。
使用ints:
#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;
}