【发布时间】:2016-01-13 13:19:35
【问题描述】:
您好,我是 C 编码新手,我似乎找不到在 while 循环开始后导致段错误的问题。
int main() {
char option;
char nickname;
printf("Welcome to our chat program. Please select mode (Send,Nickname,Exit): ");
while (gets(option)) {
if(!strncmp(option, "Exit", 4)) {
break;
}
if(!strncmp(option, "Nickname", 8)){
set_nickname(nickname);
}
if(!strncmp(option, "Send", 4)){
if(!nickname){
nickname = "Anonymous";
printf("Your nickname was set to Anonymous!");
}
send_message(nickname);
}
}
【问题讨论】:
-
你应该用一些警告标志编译:
-W -Wall例如。然后你会看到你的错误。 -
看起来你只为
option和nickname保存了一个字符,而你正在将它们与多个字符串进行比较。这可能是问题所在。 -
编译所有警告和调试信息 (
gcc -Wall -Wextra -g)。 使用调试器 (gdb) 和valgrind。顺便说一句,gets已过时,应该从不使用。使用fgets、getline、readline
标签: c arrays string segmentation-fault