gpt4 book ai didi

c - 尝试创建一个代码,该代码采用指定长度的字符串并输出整数值(ASCII)

转载 作者:行者123 更新时间:2023-11-30 16:34:33 25 4
gpt4 key购买 nike

代码跳过 for 循环中的公式,并为字符串的每个值输出“-185”。我知道指针声明有问题,但我不知道如何修复它。非常感谢任何帮助!

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

int main()
{
int d;
int e=0;
int val;
printf("Enter the length of the string:\n");
scanf("%d",&d);

char *a = (char *)malloc(sizeof(char)*d);


printf("Enter the string:\n");
while(e<d)
{
scanf("%c",(a+e));
e++;
}

printf("Outputed hash-code:\n");
printf("-185 ");

for(e = 0; e < d && *a; e++) {
val = (int)*a;
printf("%d ", ((val-96)*2 - 13));
}

printf("-185\n");
return 0;

}

我期待这样的输出

Enter the length of the string:
13
Enter the string:
hello world
Outputed hash-code:
-185 3 -3 11 11 17 -141 33 17 23 11 -5 -185

但我得到这样的输出

Enter the length of the string:
13
Enter the string:
hello world
Outputed hash-code:
-185 -185 -185 -185 -185 -185 -185 -185 -185 -185 -185 -185 -185 -185 -185

最佳答案

问题是,在打印输出时,您不会增加 val :

for (e = 0; e < d && *a; e++) {
val = (int)*a;
printf("%d ", ((val - 96) * 2 - 13));
}

我认为您的意思是在分配给val时将e添加到a

for (e = 0; e < d && *a; e++) {
val = (int)*(a + e);
printf("%d ", ((val - 96) * 2 - 13));
}

完成此更改后,如果您在代码中删除了额外的 printf("-185\n");,那么它看起来是正确的:

Enter the length of the string:
13
Enter the string:
hello world
Outputed hash-code:
-185 3 -3 11 11 17 -141 33 17 23 11 -5 -185

仅供引用,最好不要转换 malloc() 的返回值:

char *a = malloc(sizeof(char) * d);

关于c - 尝试创建一个代码,该代码采用指定长度的字符串并输出整数值(ASCII),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331115/

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