c中的整数数组(例如:int a[]):当我使用[I]访问它们时,为什么返回错误的值。? #包括 #包括 int main(){ INTA[100]; int j; printf(“输入编号”); 获得(a); 对于(j=0;j
c中的整数数组(例如:int a[]):当我使用[I]访问它们时,为什么返回错误的值。? #包括 #包括 int main(){ INTA[100]; int j; printf(“输入编号”); 获得(a); 对于(j=0;j,c,C,get(一个邪恶的函数)需要一个指向char的指针。您正在传递一个指向int的指针。这违反了约束。请改用fgets并将a声明为char数组 #include<stdio.h> #include<conio.h> #include<string.h> int main() { int i,j,k,seq=0,m=2,q=2,l;char n; char a[10];char s[10]; printf("\n enter the arra
get
(一个邪恶的函数)需要一个指向char
的指针。您正在传递一个指向int
的指针。这违反了约束。请改用fgets
并将a
声明为char
数组
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
int i,j,k,seq=0,m=2,q=2,l;char n;
char a[10];char s[10];
printf("\n enter the array elts ");
gets(a);
puts(a);
printf("\n enter the sequence ");
gets(s) ;
puts(s);
for(i=0;i<strlen(s);i++)
{
n=(s[i]-1);
for(j=0;j<n-48;j++)
{
seq=seq+m;
}
for(k=0,l=(seq);k<q;k++,l++)
{
putchar(a[l]);} m=2;seq=0;
}
printf("\n");
getch();
}
#包括
#包括
//将字符串存储到包含以空格分隔的数字的数组中
//返回可读取的数字
int intoArray(字符行[],int a[],大小);
int main(){
字符行[1024];
int a[16],s[16],m;
内塔伦;
int i,j;
printf(“\n输入数组:”);
fgets(生产线、尺寸(生产线)、标准DIN);
alen=intoArray(行、a、sizeof(a)/sizeof(*a));
printf(“\n输入序列:”);
fgets(生产线、尺寸(生产线)、标准DIN);
slen=INOTARRAY(行,s,sizeof(s)/sizeof(*s));
printf(“\n输入分区的长度:”);
scanf(“%d”、&m);
对于(i=0;i
你的编译器有没有警告你不要使用gets
,是吗?你有没有想过读一本手册?还是你把午餐扔进一台机器,在按下两个按钮后就希望得到最好的结果。虽然rtfm是一个很好的建议,我打赌OP不会打扰你,但我必须承认“gets()将一行从stdin读入s指向的缓冲区”(from)可能会被绝对初学者误解。这是页面提供的关于获取
功能的唯一信息。因此,OP:获取
只会将输入的字符一个接一个地放入参数指向的内存中;它不会以任何方式解释它们,因此不会创建整数。使用scanf()
为此,请阅读相关教程。有很多。请始终在启用所有警告的情况下编译程序,并在寻求帮助之前进行处理。请使用-Wall-Wextra-pedantic
@Deduplicator,并非所有编译器都支持这些选项;您的答案应指定您所指的编译器,因为它们可能不适用于o操作正在使用。(通常我的回复没有打开我自己的-pedantic标志,但在这种情况下…:)这意味着完成什么?我认为操作想要用int填充int数组,例如解析输入。(我没有否决,以防你介意。)是的。他写了“int a[100]”,然后“输入数字”@PeterSchneider;他也在使用get
和strlen
。没错。他很困惑。@Deduplicator;你可以发布自己的答案。
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
int i,j,k,seq=0,m=2,q=2,l;int n;
int a[10];int s[10]; //I tried using char but later in the for loop I have to compare j(int) and n. n gets its value from array. So implicit conversion messes it up.
printf("\n enter the array elts ");
gets(a);
puts(a);
printf("\n enter the sequence ");
gets(s) ;
puts(s);
for(i=0;i<strlen(s);i++)
{
n=(s[i]-1); printf("\n %d",s[i]); //I know that the problem is due to some implicit conversion from char to int.
for(j=0;j<n;j++) //But I don't know how to fix it
{
seq=seq+m;
}
printf("\n %d",seq);
for(k=0,l=(seq);k<q;k++,l++)
{
putchar(a[l]);} m=2;seq=0;
}
getch();
}
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
int i,j,k,seq=0,m=2,q=2,l;char n;
char a[10];char s[10];
printf("\n enter the array elts ");
gets(a);
puts(a);
printf("\n enter the sequence ");
gets(s) ;
puts(s);
for(i=0;i<strlen(s);i++)
{
n=(s[i]-1);
for(j=0;j<n-48;j++)
{
seq=seq+m;
}
for(k=0,l=(seq);k<q;k++,l++)
{
putchar(a[l]);} m=2;seq=0;
}
printf("\n");
getch();
}
char a[100];
fgets(a, 100, stdin);
#include <stdio.h>
#include <string.h>
//store a string to an array that contains the numbers separated by spaces
//return the number that can be read
int intoArray(char line[], int a[], size_t size);
int main(){
char line[1024];
int a[16], s[16], m;
int alen, slen;
int i, j;
printf("\nenter the array : ");
fgets(line, sizeof(line), stdin);
alen = intoArray(line, a, sizeof(a)/sizeof(*a));
printf("\nenter the sequence : ");
fgets(line, sizeof(line), stdin);
slen = intoArray(line, s, sizeof(s)/sizeof(*s));
printf("\nenter length of partitions : ");
scanf("%d", &m);
for(i = 0; i < slen ; ++i){
for(j = m*(s[i]-1); j < alen && j < m*s[i] ; ++j){
printf("%d ", a[j]);
}
}
return 0;
}
int intoArray(char line[], int a[], size_t size){
const char *delimiter = " \t\n";
char *p = line;
size_t i = 0;
for(p = strtok(p, delimiter); p && i < size; p = strtok(NULL, delimiter)){
int num;
if(1==sscanf(p, "%d", &num))
a[i++] = num;
}
return i;
}
/* demo
enter the array : 10 20 30 40 50 60 70 80 90
enter the sequence : 5 2 4 1 3
enter length of partitions : 2
90 30 40 70 80 10 20 50 60
*/