histogram 返回值的函数是 int - 指针类型。
所以总的来说,我是这样制作的。
for(int i=0;i<n;i++){
int* transform[i] = histogram(names[i]);
}
左项是整数指针类型,右项是整数指针类型。
但编译器显示此错误。
error ;可变大小的对象可能未初始化。
我认为直方图的返回值是地址的值。我想将它分配给“int* type”transform[i].
例如,
变换[0] = "地址值"
变换[1] = "地址值"
变换[2] = "地址值"....
这是错误的吗? 为什么我错了?
enter code here
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int input_strings(int arraySize);
int similar_strings();
int* histogram(char str[100]);
int main()
{
int arraySize;
scanf("%d",&arraySize);
char * names[arraySize];
char buffer[30];
int n = 0;
int l = 0;
while ( n < arraySize ) {
scanf("%s", buffer);
l = strlen(buffer);
if (l > 0){
char* newstrptr = (char*)malloc(sizeof(char) * (l + 1));
strcpy(newstrptr, buffer);
names[n] = newstrptr;
n++;
} else {
break;
}
}
for(int i=0;i<n;i++){
int* transform[i] = histogram(names[i]);
}
return 0;
}
int* histogram(char str[100])
{
int len;
int cnt[26] = { 0 };
int i, j;
len = strlen(str);
for (i = 0; i < len; i++){
if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z')){
if (str[i] <= 'Z')
cnt[str[i] - 'A']++;
else
cnt[str[i] - 'a']++;
}
}
for (i = 0; i < 26; i++)
if (cnt[i])
{
printf("%c : ", 'A' + i);
for (j = 0; j < cnt[i]; j++)
printf("*");
printf("\n");
}
int* histo = cnt;
printf("analyzing one word finished.\n");
return histo;
}