gpt4 book ai didi

将字列转换为整数的 C 程序

转载 作者:行者123 更新时间:2023-11-30 18:38:52 25 4
gpt4 key购买 nike

我正在用 c 编写一个程序来计算单词列的整数值。

#include<stdio.h>
#include<math.h>

int GetValue(char ch){
int c=ch;
if(ch>='a'&&ch<='z'){
return abs(96-c);
}
if(ch>='A'&&ch<='Z'){
return abs(64-c);
}
return -1;
}

void main()
{
char col[10];
char *str;
int len,sum=0,temp=0,i;
printf("Enter the column string : ");
scanf("%s",&col);
len = strlen(col);
memcpy(str,col,len);
str[len]='\0';
printf("Entered characters are %s and its length is %i",col,len);

for(i=0;i<len;i++){
sum+=GetValue(str[i])*(pow(26,len-1-(temp++)));
}

printf("Value of column is %d",sum);
}

当我编译它时,它给出了 3 个警告

columnno.c:20:2:警告:格式“%s”需要“char ”类型的参数,但参数 2 的类型为“char ()[10]”[-Wformat= ] scanf("%s",&col); ^

columnno.c:21:8:警告:内置函数“strlen”的隐式声明不兼容[默认启用] len = strlen(列); ^

columnno.c:22:2:警告:内置函数“memcpy”的不兼容隐式声明[默认启用] memcpy(str,col,len); ^

输出

输入列字符串:abc

段错误(核心转储)

请帮忙!!!

最佳答案

1.无需使用 %s 将数组地址传递给 scanf()

scanf("%s",&col);

更改为

scanf("%s",col);

2.在执行 memcpy(str,col,len); 之前,您应该将内存分配给 str 作为其 char *。否则,您将访问 str 中的随机值作为内存位置,从而导致未定义的行为 - 最有可能是段错误。

所以最好使用strdup()

改变

memcpy(str,col,len);
str[len]='\0';

str = strdup(col);

但是,请确保您的输入字符串不超过 9 个字符,以便将其正确存储在 cols 中。

关于将字列转换为整数的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32064205/

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