【发布时间】:2015-08-18 05:30:35
【问题描述】:
我正在用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(col); ^
columnno.c:22:2: 警告:内置函数“memcpy”的隐式声明不兼容 [默认启用] memcpy(str,col,len); ^
输出
输入列字符串:abc
分段错误(核心转储)
请帮忙!!!
【问题讨论】:
-
除了 Rohan 的回答之外,您还可以使用
malloc为指针提供内存。
标签: c arrays gcc segmentation-fault