gpt4 book ai didi

写入内存时 scanf C 中的 char[] 与 char*

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:41 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用 char* 数据类型来存储来自用户的字符串,代码编译正常但在执行 scanf 指令时失败,固定数组 char[10] 工作顺利,但我想知道如何使用 char* 代替。

bouclesCon.c

#include "bouclesCon.h"
/... ... ...
void func_While(){
//char message[10] ="hey" ;//good
char*message="hey";//copiles but fails to execute
while(strcmp(message,"sortir")!=0){
printf("vous avez ecrit %s\n",message);
scanf("%s",message);
}
}

main.c

#include"bouclesCon.h"
int main()
{
func_While();
return 0;
}

更新

正如 carveone 和 Igor 所解释的,问题与使用字符指针 (char*) 在运行时通过 scanf() 写入用户输入时分配足够内存有关,相反,数组以不同方式处理内存。

解决方案 工作代码:

`void func_While(){
//char message[10] ="hey" ;//good
char*message="hey";//copiles and execute fine!!
message=malloc(10);
if(message==NULL){
printf("error\n");
}else{
while(strcmp(message,"sortir")!=0){
printf("vous avez ecrit %s\n",message);
scanf("%s",message);
}
}
free(message);
}
`

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