| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 308 人关注过本帖
标题:关于字符串的问题
只看楼主 加入收藏
dq142
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2015-6-26
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
关于字符串的问题
原先,我是这么编译的:
    char infile[40],outfile[40];
    int a[9][10]={0};
    int x,y;
    printf("请输入数,每行两个,例如 2 3\n");
    printf("输入完成后请输入0\n");
    infile="input.txt";
    printf("output filename:");
    gets(outfile);
但是在C语言编译中显示错误,原因是infile的赋值出问题了;
但是只要改成   
        char infile[40]="input.txt",outfile[40];
    int a[9][10]={0};
    int x,y;
    printf("请输入数,每行两个,例如 2 3\n");
    printf("输入完成后请输入0\n");
    printf("output filename:");
    gets(outfile);
问题就解决了,求教一下原先的问题主要是出在了哪,为什么?
万分感谢。





错误源程序:
#include <stdio.h>
#include <stdlib.h>
void main()
{FILE *fp;
    char infile[40],outfile[40];
    int a[9][10]={0};
    int x,y;
    printf("请输入数,每行两个,例如 2 3\n");
    printf("输入完成后请输入0\n");
    infile="input.txt";
    printf("output filename:");
    gets(outfile);
    if((fp=fopen(infile,"r"))==NULL)
    {
        printf("Can't open the %s\n",infile);
        exit(1);
    }
    do
    {
        fscanf(fp,"%d",&x);
        if (x==0)
            continue;
        fscanf(fp,"%d",&y);
        a[x-1][y-1]=a[x-1][y-1]+1;
        a[x-1][9]=a[x-1][9]+1;
    }while(x!=0);
    fclose(fp);
    if((fp=fopen(outfile,"w"))==NULL)
    {
        printf("Can't open the %s\n",outfile);
        exit(2);
    }
    for (x=0;x<9;x++)
    {
        switch (x)
        {
        case 0 :fprintf(fp,"大学生活  "); break;
        case 1 :fprintf(fp,"志愿填报  "); break;
        case 2 :fprintf(fp,"自主招生  "); break;
        case 3 :fprintf(fp,"假期安排  "); break;
        case 4 :fprintf(fp,"学长高中生活  "); break;
        case 5 :fprintf(fp,"学习方法  "); break;
        case 6 :fprintf(fp,"复习技巧  "); break;
        case 7 :fprintf(fp,"应考心理  "); break;
        case 8 :fprintf(fp,"大学准备  "); break;
        }
        fprintf(fp,"选择人数:%d  ",a[x][9]);
        for (y=0;y<9;y++)
            fprintf(fp,"顺序%d:%d人  ",y+1,a[x][y]);
        fprintf(fp,"\n");
    }
    fclose(fp);
}
搜索更多相关主题的帖子: 字符串 C语言 
2015-06-28 17:38
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:10 
在C语言中对于字符数组的赋值(如楼主程序中的那种赋值)只能放在初始化的时候进行。原因在于字符数组名代表着字符数组的首地址,是一个常量,值不可改变,所以“infile="input.txt";”等于是要改变常量的值,这是不允许的。从另一个角度说,C语言中赋值表达式要求其左边的操作数为一个左值,即左边的操作数应该是可以改变的,而你在“infile="input.txt";”语句中,infile是数组名,代表数组的首地址,是一个常量,不符合上述规定,故而出错。

[ 本帖最后由 取名字 于 2015-6-28 21:43 编辑 ]
2015-06-28 21:42
dq142
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2015-6-26
收藏
得分:0 
回复 2楼 取名字
哦,那如果要更替字符串整体的内容该怎么做?
2015-06-28 22:47
取名字
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:236
专家分:924
注 册:2015-4-27
收藏
得分:0 
用gets函数或scanf函数,也可以通过循环一个一个改变。
2015-06-28 23:06
dq142
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2015-6-26
收藏
得分:0 
回复 4楼 取名字
哦,明白了。
2015-06-28 23:19
快速回复:关于字符串的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017159 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved