#include<stdio.h>#define O 10void main(){ char x[][10]={"0"},b[10];int b; for(int i=0;i<O;i++) { printf("请输入编号:"); scanf("%s",&b); x[i]=b;}
1 回答

onemoo
TA贡献883条经验 获得超454个赞
有几个错误:
main的返回类型不应是void,main函数应声明为 int main(void),注:C++中可以省略括号中的void
你前面将 b 声明为char数组,但是后面又将 b 重定义为int,这将会编译失败。
你定义了一个二维数组x,是打算在其中存入多个字符串吗? 如果是的话,那你这样就不行。
在定义数组时,如果不指定数组大小,编译器会根据初值来推断出大小,这个规则也适用于二维数组。 而你给x 的初值只有一个字符串("0"),所以实际上 x 是 char x[1][10],即只能容纳一个字符串。
假设你打算存入5个字符串,应:char x[5][10];
scanf中指定%s的话,就意味着它接受的输入就是字符串,你只需要再传入能足够容纳这些字符串的数组就可以了: scanf("%s", x[i]) // 存入x[i]位置的数组
你的代码中:b是个int,你在scanf中试图把字符串存入一个int中,这会引起溢出。
这样接受输入就可以了:
char x[字符串个数][10] = {}; // x初值为空 for (int i = 0; i < 字符串个数; ++i) scanf("%s", x[i]);
- 1 回答
- 0 关注
- 7879 浏览
添加回答
举报
0/150
提交
取消