gpt4 book ai didi

c - 将单词分配给长度时遇到问题

转载 作者:行者123 更新时间:2023-12-05 08:36:31 25 4
gpt4 key购买 nike

我正在尝试编写一个执行以下操作的程序:

Enter a word: supercalifragilisticoespialidoso

The word's length is: 32.

Enter a smaller number than the length: 23

The word cut on letter 23 is: supercalifragilisticoes.

为此我正在做:

#include <stdio.h>

#include<string.h>

#define DIM 99

int main() {

char name[DIM], name2[DIM];
int length, length2;

printf("Enter a word: ");
scanf("%s", name);
length = strlen(name);
printf("The word's length is: %d\n", length);
printf("Enter a smaller number than the length: ");
scanf("%d", &length2);
name2 = name[length2];
printf("The word cut on the letter %d is: %c", length2, name2);


return 0;
}

但是我明白了

main.c:16:11: error: assignment to expression with array type

问题出在 name2 = name[length2] 行,这是我发现创建新的较小单词的方式,但这是不对的。

有人可以帮忙吗?

最佳答案

错误在行中

name2 = name[length2];

您正在尝试将一个字符(name 中的索引 length2 之一)分配给一个数组 (name2)。

你真正想做的是:

strncpy(name2, name, length2);
name2[length2] = '\0';

这会将 name 的第一个 length2 字节复制到 name2 并添加一个终止空字符以确保安全(strncpy 如果所有字节都已写入,则不会执行此操作)。

如果您不打算再次使用 name,您也可以完全删除 name2 并向 name 添加一个空字符:

name[length2] = '\0';

您还在最后一个 printf 调用中打印了一个带有 %c 格式说明符的字符串。您应该改用 %s

关于c - 将单词分配给长度时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68783794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com