刚学数组不就还不熟练,有没有会的,用的codeblocks,为啥我二维数组不能把一串英文空格后又一串英文搞成一个数组里面?
1条回答 默认 最新
- a5156520 2022-10-13 19:27关注
要看你的代码是怎么处理的,具体可以使用fgets()函数读取一行输入读入存储书名的二维字符数组,下面是一个实现,供参考:
1、首先功用scanf()函数获取n
2、使用fgets()函数循环获取n行书名到存储书名二维字符数组,并剔除书名字符串中的换行符
3、遍历书名二维字符数组,统计相同书籍的册数
4、打印结果。
代码如下:
参考链接:
C语言读取一行输入_iownE9的博客-CSDN博客_c读取一行#include <stdio.h> #include <string.h> int main(void){ int n; char books[30][50]; scanf("%d",&n); //获取n getchar(); //读走scanf()丢弃的换行符,防止下面的fgets()函数读到这个换行符 for(int i=0;i<n;i++){ //https://blog.csdn.net/m0_71159754/article/details/125402071 fgets(books[i],50,stdin); //读取一行输入作为书名,依次存入二维数组 // strlen(books[i])-1 是当前输入的书名字符串最后一个字符 //如果他是换行符,则将它替换为字符串的结束字符'\0',以便下面进行正确的打印和计算册数 if(books[i][strlen(books[i])-1]=='\n'){ //剔除书名中的换行符 books[i][strlen(books[i])-1]='\0'; } // printf("books[%d]=%s\n",i,books[i]); } int num[30]={0}; //存储相同书籍的册数 for(int i=0;i<n;i++){ num[i]++; //默认把当前书籍的册数设置为1 for(int j=i+1;j<n;j++){ //遍历后面的书籍中是否有和当前书籍同名的书籍 //如果当前书籍和后面的书籍同名,并且不是空名字的书籍,则把书籍的册数+1, if(books[j][0]!='\0'&&strcmp(books[i],books[j])==0){ num[i]++; strcpy(books[j],""); //当计数完成后,把后面的书籍的名字置为空字符串 } } } //打印结果 for(int i=0,j=0;i<n;i++){ if(books[i][0]!='\0'){ //如果当前书籍的名字不为空,则打印对应的册数 printf("%d %s\n",num[i],books[i]); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等
- ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
- ¥15 qt6.6.3 基于百度云的语音识别 不会改
- ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
- ¥15 神经网络怎么把隐含层变量融合到损失函数中?
- ¥15 lingo18勾选global solver求解使用的算法
- ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行