我正在创建一个 char* ,它本质上将被视为字符串。该字符串应该会被反复使用。每次我尝试检查 while 循环并查看其是否正确为“退出”...
*我不断遇到段错误...我做错了什么 - 相当愚蠢的错误 - 可能吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
char* input = (char*)malloc(sizeof(char));
input = "CONTINUE";
while(strcmp(input, "quit") != 0)
{
printf("%s", "System: ");
scanf("%s", input);
}
return 0;
}
最佳答案
我第一眼看到的两个问题:
char* input = (char*)malloc(sizeof(char));
您正在为指针分配仅一个字符的内存。它应该有足够的内存来容纳您的字符串而不仅仅是一个字符。
您应该使用
strcpy
将字符串复制到分配的缓冲区中。不是将字符串文字分配给您的指针。请注意,修改此类字符串文字会导致未定义的行为。input = "CONTINUE";
执行上述 2 项操作的正确方法是:
char* input = (char*)malloc(sizeof(MAX_LENGTH));
strcpy(input, "YOURSTRING");
其中 MAX_LENGTH
足以容纳您的输入字符串。
关于c - 使用 scanf 获取字符串来创建并针对 while 循环验证它...继续获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8440841/