标题:大哥们,普通的数组赋值不知为何出现 [error] expected primary -expressio ...
只看楼主
菜鸟计员
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-12-13
结帖率:100%
已结贴  问题点数:20 回复次数:2 
大哥们,普通的数组赋值不知为何出现 [error] expected primary -expression before ']' token 怎么办?
#include "stdio.h"
#include "stdlib.h"
int main()
{
    FILE *fp;
    char a[12];
    char str1[100];
    a[]="hello world";     /*  是这行代码显示错误   */
   if((fp=fopen("D:\\项目编程.txt","w+"))==NULL)
    {
        printf("打开文件失败");
        exit(0);
    } printf("调试1");
   
    fprintf(fp,"%s",a);
    fscanf(fp,"%s",str1);
    printf("%s",str1);
    return 0;
}
    错误显示: [error] expected primary -expression before ']' token  怎么改?
搜索更多相关主题的帖子: primary 出现 before expected token 
2022-12-13 18:21
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:20 
字符串字面值是一个指针,是不能直接赋值给一个数组的。

你要直接赋值给一个数组只有一个例外,就是在初始化的时候,例如:char a[ 12 ] = "hello world";

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2022-12-13 18:25
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
数组不可以使用 operator= 赋值,只能 值初始化 或 strcpy等函数赋值
程序代码:
#include <stdio.h>
#include <string.h>

int main( void )
{
    char s[] = "hello world"; // 值初始化
    puts( s );

    strcpy( s, "good bye" ); // 使用strcpy赋值
    puts( s );
}


然后是你的代码,读写之间必须使用 fseek 等同步读写
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    FILE* fp = fopen( "D:\\项目编程.txt", "w+" );
    if( !fp )
    {
        puts( "打开文件失败" );
        return 1;
    }

    const char* a = "hello world";
    fprintf( fp, "%s", a );

    rewind( fp ); // 这一步很重要

    char str[100];
    fscanf( fp, "%s", str );
    printf( "%s\n", str );

    fclose( fp );
}
2022-12-14 10:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510941-1-1.html




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

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