啊哈磊_编程从这里起步

标题: 各位同学,看看这哪里错了 [打印本页]

作者: 跳跳糖    时间: 2014-4-6 12:29
标题: 各位同学,看看这哪里错了
#include<stdio.h>
#include<string.h>
main()
{
char a[11],b[10],c[11],d[10];
    int i;
    a[14]="tanglulian";
    b[10]="130431312";
    printf("登陆\n");
    for(i=1;i;i++)
{   printf("请输入用户名:");
        scanf("%s",c);
     printf("请输入密码:");
        scanf("%s",d);
     if (strcmp(a[11],c[11])==0&&strcmp(b[10],d[10])==0)
  {
         printf("您已成功登陆\n");
            break;
  }
     else
   printf("用户名或密码无效\n");
}
}

作者: 981013    时间: 2014-4-6 15:04
  1. a[14]="tanglulian";
复制代码

该句指给a的第15个元素赋值为"tanglulian",有两个错误:
a一共只有14个元素(a[0]-a[13]),没有第15个元素
a[n]是一个字符,而非字符串,不能赋给它一个字符串值
改成这样:
strcpy(a,"tanglulian");
strcpy这个函数负责把后面的一个字符串的值拷贝到前一个里
接下来一句也是同样的错误。

还有
  1. if (strcmp(a[11],c[11])==0&&strcmp(b[10],d[10])==0)
复制代码

应改为
  1. if (strcmp(a,c)==0&&strcmp(b,d)==0)
复制代码


记住C的字符串是当成字符数组(以\0结束)来处理的,不应使用=来赋值,
还有
  1. char a[10];
复制代码

这里字符串变量的名字叫a,不叫a[10],a[10]会被当作a的第11个值(实际上并不能使用a[10]的值)。
作者: rosynirvana    时间: 2014-4-6 21:10
981013 发表于 2014-4-6 15:04
该句指给a的第15个元素赋值为"tanglulian",有两个错误:
a一共只有14个元素(a[0]-a[13]),没有第15个 ...

他定义的a是char a[11];
地道点的写法是
char a[11] = "tanglulian";
而不是用函数
作者: 跳跳糖    时间: 2014-4-7 12:32
知道了,谢谢你们




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2