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

#include<stdio.h>

#define O 10

void  main()

{

char x[][10]={"0"},b[10];

int b;

for(int i=0;i<O;i++)

{

printf("请输入编号:");

scanf("%s",&b);

x[i]=b;

}

Joe____0
浏览 7880回答 1
1回答

onemoo

有几个错误: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]);
打开App,查看更多内容
随时随地看视频慕课网APP