2013-03-04 58 views
0
#include<stdio.h> 
#include<string.h> 

int main(){ 
    char array[]="Arijit Saha Student"; 
    spaceremover(array); 
    getch(); 
    return 1; 
} 

int spaceremover(char a[]){ 
    int i; 
    // printf("L=%d",strlen(a)); 
    char final[strlen(a)+1]; 
    int count=0; 
    for(i=0;i<strlen(a);i++) 
    { 
     if(a[i]!=' ') 
      final[count]=a[i]; 
     count++; 
    } 
    final[count]='\0'; 
    int j=0; 
    for(j=0;j<strlen(final);j++) 
    printf("%c",final[j]); 
    // printf("\n%s",final); 
    return 1; 
} 

除去在该示例的代码的输出是Arijit.Saha,但我的期望的输出是ArijitSahaStudent。 为什么我得到错误的输出? 那里。来自哪里?空间从字符串

+1

这可能属于上[CodeReview](http://codereview.stackexchange.com) – 2013-03-04 16:28:32

+0

@VladLazarenko真的吗?我认为SO是用于编程问题,CR用于审查代码。那么这里有什么样的问题呢? – Dukeling 2013-03-04 16:30:15

+2

'。'可能只是垃圾数据剩下的东西。你最大的问题是无论如何'count'都会增加。你应该在'final [count] = a [i];'和'count ++'中放置大括号,所以'count'只会在向数组添加一个字母时增加。目前,当它到达一个空间时,没有任何东西被添加到该位置的'final'数组中 – jonhopkins 2013-03-04 16:30:37

回答

0

您没有正确递增计数。它需要在if循环中。这可能会更容易让你看到事物是否正确缩进。

#include<stdio.h> 
#include<string.h> 

int main(){ 
    char array[]="Arijit Saha Student"; 
    spaceremover(array); 
    return 1; 
} 

int spaceremover(char a[]){ 
    int i; 
    // printf("L=%d",strlen(a)); 
    char final[strlen(a)+1]; 
    int count=0; 
    for(i=0;i<strlen(a);i++) 
    { 
    if(a[i]!=' ') 
     final[count++]=a[i]; 
    } 
    final[count++]='\0'; 
    int j=0; 
    for(j=0;j<strlen(final);j++) 
    printf("%c",final[j]); 
    // printf("\n%s",final); 
    return 1; 
} 
6

的错误是在这里:

if(a[i]!=' ') 
    final[count]=a[i]; 
count++; 

count++应列入if,所以:

if(a[i]!=' ') { 
    final[count]=a[i]; 
    count++; 
} 

注:它被认为是良好的编程习惯后if语句总是使用大括号。

+1

+1好看。它只是显示了代码正确缩进的重要性。 – LihO 2013-03-04 16:33:03

2

在for循环中,即使a[i] == ' '增加了计数。
因此,当a[i] == ' '你只增加计数,但不会将final[count]设置为任何值。

我假设你彪写:

if (a[i] != ' ') 
{ 
    final[count] = a[i]; 
    count++; 
} 
+0

非常感谢。非常感谢。非常愚蠢。 – 2013-03-04 16:45:17

0

在循环中,计数应该增加,如果A [1]不等于空间

if(a[i]!=' ') final[count]=a[i]; count++;

if(a[i]!=' ') 
final[count++]=a[i]; 
//count++;