当我尝试扫描整数n
并声明一个数组时,我无法得到正确的输出,当我调试它并打印数组的元素时,我收到一个错误:
无法对不完整类型执行指针数学运算,尝试转换为已知类型或void *
。
#include <stdio.h>
int main()
{
int n,i=0,j=0,k=0;
scanf("%d",&n);
char string[10000];
scanf("%s",string);
char a[1000][n];
while(isalnum(string[i])!=0)
{
for(j=0;j<n;j++)
{
a[k][j]=string[i];
i++;
}
k++;
}
i=0;
for(j=0;j<n;j++)
{
while(isalnum(a[i][j])!=0)
{
printf("%c",a[i][j]);
i++;
}
}
printf("\n");
return 0;
}
答案 0 :(得分:0)
while(isalnum(string[i])!=0)
{
for(j=0;j<n;j++)
{
a[k][j]=string[i];
i++;
}
k++;
}
在这个循环中有一个错误,while
条件正在检查isalnum(string[i] != 0)
,而在while循环中你有一个for循环,其中i正在递增。
仅仅因为你没有得到正确的输出,你似乎认为数组创建导致了问题。但阵列创建很好。实现你想要做的事情是你的逻辑错误。
如果您只想打印字母数字字符而忽略其余字符,则可以如下所示:
#include <stdio.h>
int main()
{
int i=0,k=0;
char s[10000];
char a[10000];
scanf("%s",s);
while(s[i] != '\0')
{
if(!isalnum(s[i]))
{
i++;
continue;
}
else
a[k++] = s[i];
i++;
}
a[k] = '\0';
printf("%s\n",a);
return 0;
}