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
*/