错误消息 - 一元'*'的无效类型参数(包含'int')

时间:2018-03-30 17:43:58

标签: c

将文档转换为字符串数组的程序。

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
main()
{
    int i,j;
    char *a[1000],c,*z; 
    z=a;
    for(i=0;(c=getchar())!=EOF;i++)
        {    if(c==' '||c=='\n')
            {
                z+=1;
                i=0;
                continue;
            }
            *(*(z)+i)=c;
        }
}

我想编写一个程序来从用户那里获取输入并将输入保存为单词数组。但是当我尝试运行代码时,它显示了前面提到的错误。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

首先,你应该使用int作为main()的返回类型,因为main()的默认返回类型是int。 数组名称本身就是一个指针,因此删除数组声明中的指针:char *a[1000]char a[1000]

现在只需从代码的第18行中的z变量中删除指针: *(*(z)+i)=c;*((z)+i)=c;

希望这有助于找出您想要的代码。

答案 1 :(得分:0)

您的指针算法已关闭,*a[1000]是一个包含1000个指针的数组,您真的需要更像

的内容
int main(void) {
    int i, j;
    char a[1000][100], c;
    i = 0, j = 0;
    while ((c = getchar()) != EOF)
    {
        if (c == ' ' || c == '\n')
        {
            // should null terminate if you want to treat the words as strings
            a[i][j] = '\0';

            i++;
            j = 0;
            continue;
        }
        a[i][j++] = c;
    }
}

这应该在a现在拥有的100个字符的1000个数组中的每一个中存储一个单词(最多99个字符,由空格或换行符字符分隔)。

您当然应该添加检查以确保永远不会超过每个单词的99个字符限制和1000个单词限制。