为了账号安全,请及时绑定邮箱和手机立即绑定

怎么把输入的字符串储存到数组里

怎么把输入的字符串储存到数组里

C C++
Joe____0 2015-12-11 23:04:00
#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]);
查看完整回答
反对 回复 2015-12-12
  • 1 回答
  • 0 关注
  • 7879 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号