You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将存储字符串的变量赋值给另一个存储字符串的变量?

C语言中字符串变量的正确赋值方法

你写的代码里word = words;是错误的——在C语言里,字符串本质是字符数组或者字符指针,直接用等号赋值只会复制指针的内存地址,而不是字符串的实际内容。要把word里的字符串内容赋值给words,得分两种情况处理:

1. 变量是字符数组的情况

如果word和words是预先定义好的字符数组(比如char word[100], words[100];),需要用标准库的strcpy函数来完成内容复制:

#include <string.h> // 必须包含这个头文件才能用strcpy

printf("Enter word to search in file: ");
scanf("%s", word);
strcpy(words, word); // 将word的字符串内容复制到words中

⚠️ 注意:必须保证words的数组长度足够容纳word的内容(包括字符串末尾的\0结束符),否则会出现数组越界,导致程序异常。

2. 变量是字符指针的情况

如果word和words是字符指针(比如char *word, *words;),直接赋值会让两个指针指向同一块内存,修改其中一个会影响另一个。要复制内容,得先给words分配足够的内存,再用strcpy或者strdup:

方法一:用malloc+strcpy

#include <string.h>
#include <stdlib.h>

printf("Enter word to search in file: ");
// 先给word分配内存,这里假设最多输入99个字符
word = malloc(100 * sizeof(char));
scanf("%s", word);
// 根据word的实际长度分配内存,+1是为了存\0
words = malloc(strlen(word) + 1);
strcpy(words, word);

// 用完后记得释放内存,避免内存泄漏
free(word);
free(words);

方法二:用strdup(简化写法)

strdup会自动分配内存并完成复制,但它属于POSIX标准函数,不是C标准库的一部分:

#include <string.h>
#include <stdlib.h>

printf("Enter word to search in file: ");
word = malloc(100 * sizeof(char));
scanf("%s", word);
words = strdup(word);

// 同样要记得释放内存
free(word);
free(words);

总结:C语言里不能直接用=复制字符串内容,必须借助字符串处理函数完成,同时要注意内存分配和数组长度的合理性,避免出现内存问题。

内容的提问来源于stack exchange,提问作者user20610254

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:50:28