注册 登录
编程论坛 C语言论坛

大哥们,普通的数组赋值不知为何出现 [error] expected primary -expression before ']' token 怎么办?

菜鸟计员 发布于 2022-12-13 18:21, 1346 次点击
#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  怎么改?
2 回复
#2
renkejun19422022-12-13 18:25
字符串字面值是一个指针,是不能直接赋值给一个数组的。

你要直接赋值给一个数组只有一个例外,就是在初始化的时候,例如:char a[ 12 ] = "hello world";
#3
rjsp2022-12-14 10:11
数组不可以使用 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 );
}
1