gpt4 book ai didi

c - 如何在c中扫描整数 'n'然后声明数组[1000][n]?

转载 作者:行者123 更新时间:2023-11-30 17:25:32 25 4
gpt4 key购买 nike

当我尝试扫描整数 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;
}

最佳答案

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;
}

关于c - 如何在c中扫描整数 'n'然后声明数组[1000][n]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27055996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com