2014-04-17 2 views
-1

이 내가 문자 내 기능이 C에서 제대로 작동하지 않는 이유는 무엇입니까?

aaa 
bbb 
ccc 

이에서 가능한 모든 문자열을 작성해야 내 프로그램 (수평, 수직, 대각선 ...)의 2 차원 배열을이 코드에서 내 코드

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

int proba(char a[][3], int y1, int x1){ 
    char s[1000]; 
    int br,broj; 
    br=0; 
    s[0]='\0'; 
    printf("%d\n", x1); 
    while((y1!=3) && (x1!=3)){ 
     s[br]=a[y1][x1]; 
     printf("s= %s\n", s); 
     y1=y1+1; 
     x1=x1+1; 
     br++; 
    } 
    printf("%s\n", s); 
    s[0]='\0'; 
    return broj; 
} 


int main(void) { 
    const char *needle; 
    int konacno,n,i; 
    konacno=0; 
    n=3; 
    char stack[3][3]={{'a','a','a'},{'b','b','b'},{'c','c','c'}}; 
    konacno=konacno+proba(stack, 0,0); 
    konacno=konacno+proba(stack, 0,1); 
    printf("%d", konacno); 
    return 0; 
} 

입니다 , 그리고 그것에 대한 함수를 작성했지만 작동하지 않습니다, 그래서 내가 여기이 코드로 축소하고 여전히 작동하지 않습니다. 문제는이의 출력에 이미

s= a 
s= ab 
s= abc 
abc 
s= abc 
s= abc 
abc 

당신은 절차 내 문자열의 secund 실행에 것을 볼 수있다 얻을 수 있다는 것입니다 내가

두 번 문자열을 비운 경우에도 그래도 ABC
s[0]='\0'; 
는 내가 뭘 잘못 모른다

, 나는 파스칼에 정확한 코드를 작성하고 C 프로그래밍 언어에서 ...

+0

프로그램이 컴파일되지 않습니다 (http://coliru.stacked-crooked.com/a/a1af2cbcb228fd1a). 또한 모든 경고는 수정되어야합니다. 그것들은 당신의 문제와 관련이있을 수 있습니다. – rubenvb

+0

코드에 * count * 함수를 포함하지 않았기 때문에 컴파일되지 않습니다. – user3539825

+0

이제 해결되었으므로 실행 해 보거나 전체 코드를 보려면 https :// probaFXFz – user3539825

답변

0

를 내가 원하는처럼 작동하지만, 여기 그렇지 않은 , 알 l 문자열은 끝에 null 종결자가 필요하며 '\0'으로 지정됩니다. 그래서 루프에서 문자열에 문자를 추가 한 후 문자열을 인쇄하기 전에 null 종결자를 추가해야합니다. 코드는 다음과 같아야합니다.

while((y1!=3) && (x1!=3)){ 
    s[br]=a[y1][x1]; 
    br++; 
    s[br] = '\0'; 
    printf("s= %s\n", s); 
    y1=y1+1; 
    x1=x1+1; 
} 
+0

고맙습니다. user3386109 이것은 매우 유용했습니다! 너무 나쁜 나는 평판 때문에 당신의 대답을 아직 상상할 수 없다. – user3539825

관련 문제