将文档转换为字符串数组的程序。
#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;
}
}
我想编写一个程序来从用户那里获取输入并将输入保存为单词数组。但是当我尝试运行代码时,它显示了前面提到的错误。 谢谢你的帮助。
答案 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个单词限制。