我编写了一个函数,它接收一个字符串并简单地对该字符串进行编码(如果您愿意,可以压缩)该格式的字符串:input = aassda,output = 2a2s1d1a。我的问题是,如果我输入一个 47 个字符或更长的字符串,我会遇到段错误。我附上了下面的功能。我大约一周前开始使用 C,所以请多多包涵 =/
编辑:任何改进建议也很好。我知道我可以使代码更有效率,但由于我对 python 的了解很少,所以我决定以最直接的方式进行。
最佳答案
string
只是一个垃圾指针。它永远不会被设置,也永远不会与任何内存相关联。您需要为 string
malloc()
一些内存(完成后不要忘记 free()
它!),或者你需要把它做成一个数组。也就是说,您的两个选择是:
使用malloc()
/free()
:
int main()
{
char* string = malloc(51); // Room for 51 chars (50 letters and 1 null terminating character)
printf("Please input a string of at most 50 chars: ");
scanf("%s", string);
lame_function(string);
free(string);
}
使用数组:
int main()
{
char string[51]; // Room for 51 chars (50 letters and 1 null terminating character)
printf("Please input a string of at most 50 chars: ");
scanf("%s", string);
lame_function(string);
}
关于c - 当给出长度为 48 或更长的字符串时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451908/