【问题标题】:I can't define an element into my char array我无法在我的 char 数组中定义一个元素
【发布时间】:2021-01-08 14:49:33
【问题描述】:

我正在学习使用 C。我有这样的代码:

int main() {
    FILE *fp;
    char usernames[8][20] = {"Lebron","Gasol","Davis","Schroder","KCP","Jr Smith"};
    int i =0;
    usernames[6][20] = 'Danny';
    fp=fopen("out.txt","w");
    for(i=0; i<7; i++) {
        fprintf(fp,"%s\n",usernames[i]);
    }
}

在我的文本文件中,没有写“Danny”。我不能添加像第 3 行这样的元素吗?定义后如何将元素添加到数组中?

【问题讨论】:

  • 请注意,usernames[6][20] 中的 20 不是有效的数组下标——它违反了数组边界。元素从 0 到 19。还要注意 'Danny' 是实现定义的多字符常量,而不是字符串。
  • 一般char a[n]; a[n] = x 正在尝试写入越界。当您分配给usernames[6][20] 时,您会通过超出数组边界的写入来调用未定义的行为。而'Danny' 并不是你想的那样。

标签: arrays c string char


【解决方案1】:

检查数据类型!

usernames[6][20] 属于char 类型,而'Danny' 不是char 类型(不使用单引号'')。你的编译器应该已经警告你了

warning: character constant too long for its type
     usernames[6][20] = 'Danny';
                        ^~~~~~~
warning: overflow in implicit constant conversion [-Woverflow]

打开编译器警告。

你需要复制一个字符串,所以你应该使用strcpy(),比如

 strcpy(usernames[6], "Danny");

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 2021-06-27
    • 2023-04-06
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多