ICP LAB ASSIGNMENT PROJECT.exe中0x7C131F4C(ucrtbased.dll)处引发异常:0xC0000005
我试图打印一些数组,但无论如何都无法打印 我做错了哪一部分 是阵列吗ICP LAB ASSIGNMENT PROJECT.exe中0x7C131F4C(ucrtbased.dll)处引发异常:0xC0000005,c,C,我试图打印一些数组,但无论如何都无法打印 我做错了哪一部分 是阵列吗 int main() { int i; char id[3]; ///sample data wanted to print id[0] = 'id1'; id[1] = 'id2'; id[2] = 'id3'; for (i = 1; i <= 3; ++i) { printf("%s", id[i]); ///The error appeare
int main()
{
int i;
char id[3]; ///sample data wanted to print
id[0] = 'id1';
id[1] = 'id2';
id[2] = 'id3';
for (i = 1; i <= 3; ++i)
{
printf("%s", id[i]); ///The error appeared here////
}
}
intmain()
{
int i;
char id[3];///要打印的示例数据
id[0]=“id1”;
id[1]=“id2”;
id[2]=“id3”;
对于(i=1;ii
从1
开始,转到3
:
for (i = 1; i <= 3; ++i)
也就是说,它们从0
开始,然后在小于数组大小时移动。
不小于或等于。那是你的错误
接下来,数组的每个元素都是一个字符。
但是您正在尝试用3个字母初始化它们,例如:id1
单个字符只能容纳一个字母,而不能容纳一组3个字母
您正试图使用%s
打印它们;但是%s
用于字符串,而不是单个字符
这是您的程序的更正版本
int main()
{
int i;
char* id[3]; // Declare strings, not characters.
id[0] = "id1"; // Initialize each with a string
id[1] = "id2";
id[2] = "id3";
for (i = 0; i < 3; ++i) // Set loop limit correctly.
{
printf("%s\n", id[i]);
}
}
intmain()
{
int i;
char*id[3];//声明字符串,而不是字符。
id[0]=“id1”;//用字符串初始化每个
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)//正确设置循环限制。
{
printf(“%s\n”,id[i]);
}
}
i
从1
开始,转到3
:
for (i = 1; i <= 3; ++i)
也就是说,它们从0
开始,然后在小于数组大小时移动。
不小于或等于。那是你的错误
接下来,数组的每个元素都是一个字符。
但是您正在尝试用3个字母初始化它们,例如:id1
单个字符只能容纳一个字母,而不能容纳一组3个字母
您正试图使用%s
打印它们;但是%s
用于字符串,而不是单个字符
这是您的程序的更正版本
int main()
{
int i;
char* id[3]; // Declare strings, not characters.
id[0] = "id1"; // Initialize each with a string
id[1] = "id2";
id[2] = "id3";
for (i = 0; i < 3; ++i) // Set loop limit correctly.
{
printf("%s\n", id[i]);
}
}
intmain()
{
int i;
char*id[3];//声明字符串,而不是字符。
id[0]=“id1”;//用字符串初始化每个
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)//正确设置循环限制。
{
printf(“%s\n”,id[i]);
}
}
您通过传递类型错误的数据调用了未定义的行为:%s
在传递类型为char
(此处扩展为int
)的id[i]
时,需要指向以null结尾的字符串的指针
您可以使用%c
显示多字符文字的实现定义值的值
正如@abelenky所说,循环范围也是错误的
#include <stdio.h>
int main()
{
int i;
char id[3]; ///sample data wanted to print
id[0] = 'id1';
id[1] = 'id2';
id[2] = 'id3';
for (i = 0; i < 3; ++i)
{
printf("%c", id[i]);
}
}
#包括
int main()
{
int i;
char id[3];///要打印的示例数据
id[0]=“id1”;
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)
{
printf(“%c”,id[i]);
}
}
或者你是说这个
#include <stdio.h>
int main()
{
int i;
const char* id[3]; ///sample data wanted to print
id[0] = "id1";
id[1] = "id2";
id[2] = "id3";
for (i = 0; i < 3; ++i)
{
printf("%s\n", id[i]);
}
}
#包括
int main()
{
int i;
const char*id[3];///要打印的示例数据
id[0]=“id1”;
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)
{
printf(“%s\n”,id[i]);
}
}
您通过传递类型错误的数据调用了未定义的行为:%s
在传递类型为char
(此处扩展为int
)的id[i]
时,需要指向以null结尾的字符串的指针
您可以使用%c
显示多字符文字的实现定义值的值
正如@abelenky所说,循环范围也是错误的
#include <stdio.h>
int main()
{
int i;
char id[3]; ///sample data wanted to print
id[0] = 'id1';
id[1] = 'id2';
id[2] = 'id3';
for (i = 0; i < 3; ++i)
{
printf("%c", id[i]);
}
}
#包括
int main()
{
int i;
char id[3];///要打印的示例数据
id[0]=“id1”;
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)
{
printf(“%c”,id[i]);
}
}
或者你是说这个
#include <stdio.h>
int main()
{
int i;
const char* id[3]; ///sample data wanted to print
id[0] = "id1";
id[1] = "id2";
id[2] = "id3";
for (i = 0; i < 3; ++i)
{
printf("%s\n", id[i]);
}
}
#包括
int main()
{
int i;
const char*id[3];///要打印的示例数据
id[0]=“id1”;
id[1]=“id2”;
id[2]=“id3”;
对于(i=0;i<3;++i)
{
printf(“%s\n”,id[i]);
}
}
int main(){int i;const char*id[8],pass[8];///想要打印id[0]=“id1”;id[1]=“id2”;id[2]=“id3”;pass[1]=“pass1”;pass[2]=“pass2”;pass[3]=“pass3”;对于(i=0;i<3;++i){printf(“%s\n”,pass[i]);}再次出现相同的错误,您设置了id[0]
,但您从未设置过pass[0]
。相反,您从pass[1]=“…”
开始,您必须先设置pass[0]
,然后再尝试打印它。int main(){int i;const char*id[8],pass[8];///想要打印id[0]=“id1”;id[1]=“id2]=“id3”;pass[1]=“pass1”;pass[2]=“pass2”pass[3]=“pass3”for(i=0;i<3;++i){printf(“%s\n”,pass[i]);}再次出现同样的错误,您设置了id[0]
,但您从未设置pass[0]
。相反,您从pass[1]=“…”
开始,必须先设置pass[0]
,然后再尝试打印它。