我的程序在显示" Quel est ce mot?"之后崩溃了? :
我怎么能发声,怎么解决这个问题?
期待你的评论:)
感谢您的帮助!
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: wjean-ma <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/08/03 03:07:53 by wjean-ma #+# #+# */
/* Updated: 2015/08/08 21:43:49 by wjean-ma ### ########.fr */
/* */
/* ************************************************************************** */
#include "include/libft.h"
char *ft_putword(char **client, char *str)
{
int i;
i = 0;
while (str[i])
{
if ((*client)[i] != str[i])
(*client)[i] = '*';
else
(*client)[i] = str[i];
i++;
}
return (*client);
}
int main(void)
{
char *to_find;
char *client;
int size;
int buffer;
to_find = "Violet";
size = ft_strlen(to_find) + 1;
if ((client = (char *)malloc(sizeof(char) * (size))) == NULL)
return (-1);
client = "******";
while (ft_strcmp(client, to_find) != 0)
{
ft_putstr("Quel est ce mot: ");
ft_putstr(ft_putword(&client, to_find));
ft_putstr("\n> ");
scanf("%s", client);
while ((buffer = getchar()) != '\n')
;
ft_putstr(ft_putword(&client, to_find));
ft_putchar('\n');
}
ft_putstr("Done\n");
free(client);
return (0);
}
/ * --------------------------------------------- -------------------- * /
答案 0 :(得分:0)
此语句:client = "******";
将client
设置为字符串文字的地址,编译器将其放入只读内存中。然后,当您尝试使用scanf("%s", client);
更改此内存时,将导致崩溃。
您可以将客户端初始化为类似于char client[] = "******";
的数组,以便编译器将其放入可写内存段。