鱼C论坛

 找回密码
 立即注册
查看: 3756|回复: 1

关于指针数组的问题

[复制链接]
发表于 2012-12-12 11:38:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 丿Ordinary★灬 于 2012-12-12 22:28 编辑

废话不多说,看代码。。谢谢了   一菜鸟   真心求教!!!!
  1. #include<stdio.h>
  2. #define max 10
  3. int main(void)
  4. {
  5.         int number[max],n,x,i,k=0;
  6.         char *str[max];
  7.         printf("请输入班级学生的人数:");
  8.         scanf("%d",&n);
  9.         printf("请逐个输入学生的学号和姓名:\n");
  10.         for(i=0;i<n;i++)
  11.         {
  12.                         scanf("%d",&number[i]);
  13.                         scanf("%s",&str[i]);
  14.         }
  15.         printf("请输入要查找的学生学号:");
  16.         scanf("%d",&x);
  17.         for(i=0;i<n;i++)
  18.         {
  19.                 if(number[i]==x)
  20.                 {
  21.                         k=i;
  22.                         break;
  23.                 }
  24.         }
  25.         if(k==n)
  26.                 printf("查找失败\n");
  27.         else
  28.         {
  29.                 printf("%d\t",number[k]);
  30.                 printf("%s\n",str[k]);
  31.         }
  32.         return 0;
  33. }
复制代码
这样在printf("%s\n",str[k]);   这里会出错,如图:file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/1.jpg 1.jpg

可是把这里改下 printf("%s\n",str+k); 又出现这种现象: 2.jpg

输出那里  为什么会这样呢??

这是我改过的代码,正确的:
  1. #include<stdio.h>
  2. #define max 10
  3. int main(void)
  4. {
  5.         int number[max],n,x,i,k=0;
  6.         char *str[max];
  7.         printf("请输入班级学生的人数:");
  8.         scanf("%d",&n);
  9.         printf("请逐个输入学生的学号和姓名:\n");
  10.         for(i=0;i<n;i++)
  11.         {
  12.                         scanf("%d",&number[i]);
  13.                         scanf("%s",str+i);
  14.         }
  15.         printf("请输入要查找的学生学号:");
  16.         scanf("%d",&x);
  17.         for(i=0;i<n;i++)
  18.         {
  19.                 if(number[i]==x)
  20.                 {
  21.                         k=i;
  22.                         break;
  23.                 }
  24.         }
  25.         if(k==n)
  26.                 printf("查找失败\n");
  27.         else
  28.         {
  29.                 printf("%d\t",number[k]);
  30.                 printf("%s\n",str+k);
  31.         }
  32.         return 0;
  33. }
复制代码
结果: 3.jpg

但是输入中文就这样了: 4.jpg
这是不是赋值的原因啊!!
下面还有个问题??
  1. #include<stdio.h>

  2. int main(void)
  3. {
  4.         char *str[3];
  5.         int i = 0;
  6.         for(i=0;i<3;++i)
  7.         {
  8.                 printf("请输入第[%d]个字符串:",i+1);
  9.                 scanf("%s",str+i);
  10.         }
  11.         for(i=0;i<3;++i)
  12.         {
  13.                 printf("输出第[%d]个字符串:",i+1);
  14.                 printf("%s\n",str+i);
  15.         }
  16.         printf("\n");
  17.         return 0;
  18. }
复制代码
输出结果:请输入第[1]个字符串:abcdef
请输入第[2]个字符串:ghijkl
请输入第[3]个字符串:mnopq
输出第[1]个字符串:abcdghijmnopq
输出第[2]个字符串:ghijmnopq
输出第[3]个字符串:mnopq

请按任意键继续. . .
为什么???



小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-14 20:48:58 | 显示全部楼层
老大,你用的是指针数组吧!%s的输出控制,如果你后面有字符,他就会自动的向下指
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 20:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表