数组未在 C 程序中完全解析

  • 本文关键字:程序 数组 c arrays stdio
  • 更新时间 :
  • 英文 :


我正在尝试构建一个程序,该程序从输入中解析字符数组,然后返回一个省略额外空格的格式化。

#include <stdio.h>
# include <ctype.h>
/* count charecters in input; 1st version */
int main(void)
{
int ch, outp=0;
char str[1000], nstr[1000];
/* collect the data string */
while ((ch = getchar()) != EOF && outp < 1000){
str[outp] = ch;
outp++;
}
for (int j = 0; j < outp-1; j++){
printf("%c",str[j]);
}
printf("n");
for (int q = 0; q < outp-1; q++)
{
if (isalpha(str[q]) && isspace(str[q+1])){
for(int i = 0; i < outp; i++){
if (isspace(str[i]) && isspace(i+1)){
continue;
}
nstr[i] = str[i];
}
}
}
printf("n");
printf("Formated Text: ");
for (int i = 0; i < outp-1; i++){
printf("%c", nstr[i]);
}
//putchar("n");c
// printf("1");
return 0;
}

这是我的代码。数组永远不会被完全解析,通常会省略结尾,出现奇数字符,过去的尝试产生了一个未完全解析的数组,为什么? 这是"C 编程语言"中的练习 1-9。

a( 在将字符从str复制到nstr时,您需要使用额外的索引变量。做类似的事情——

for(int i = 0, j = 0; i < outp -1; i++){
if (isspace(str[i]) && isspace(i+1)){
continue;
}
nstr[j++] = str[i];
}

b( 在打印nstr时,您使用的是原始字符串的长度strnstr的长度将小于str的长度,因为您已经删除了空格。

您需要立即找到nstr的长度或在条件中使用i < strlen(nstr) -1

相关内容

  • 没有找到相关文章

最新更新