gpt4 book ai didi

由于错误的指针导致的 c 段错误

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

这是我的代码:

   #include <stdio.h>
#include <stdlib.h>

void getinfo(unsigned int a, unsigned int b, char **s);

int main(){
unsigned int len_max = 8;
unsigned int current_size = 0;
char *pStr = malloc(len_max);
if(pStr == NULL){
perror("\nMemory allocation\n");
return EXIT_FAILURE;
}
current_size = len_max;

printf("Inserisci hostname: ");
getinfo(len_max, current_size, &pStr);
printf("\nLa stringa inserita è: %s\n", pStr);
free(pStr);
return EXIT_SUCCESS;
}

void getinfo(unsigned int a, unsigned int b, char **pStr){
unsigned int i = 0;
char c = EOF;
while((c = getchar()) != '\n'){
*pStr[i++] = (char)c;
if(i == b){
b = i+a;
if((*pStr = realloc(*pStr, b)) == NULL){
perror("\nMemory allocation error\n");
exit(EXIT_FAILURE);
}
}
}
*pStr[i]='\0';
}

当我执行这段代码时,当我按下回车键时(在我写完字符串之后)出现了段错误。
我确定问题出在函数中(可能问题出在 *s 指针)但我不知道如何更正它...

最佳答案

你有一个优先问题。你需要使用

(*s)[i++] = ...

代替

*s[i++] = ...

同样你需要

(*s)[i]='\0';

当您编写 *s[i] 时,您正在索引 s。但是您想索引 *s,因此需要括号。

我没有检查您的其余代码,但如果确实存在更多错误,我希望这能帮助您调试其余代码。

关于由于错误的指针导致的 c 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10463824/

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