2016-11-30 188 views
0

我做了一個代碼,應該採取stdin並確保它是真實的,這取決於我的scanf格式。掃描字符串格式

下面是代碼

#include <stdio.h> 

int main() 
{ 
    int i; 
    char* a; 
    i = 0; 
    while (1 == scanf("/%[^/ \t\n]", a[i++])) 
     printf(">%s<\n", a[i-1]); 

    return 0; 
} 

樣本輸入:

/test 

輸出樣本:

/test 
Segmentation fault 

我不知道是什麼原因造成分段錯誤

+1

'炭STR [32]; char * a = str; i = 0; while(1 == scanf(「/%[^/\ t \ n]」,a)) printf(「>%s <\ n」,a);' – BLUEPIXY

+0

一個好的開始是使用調試器找出崩潰發生的位置。 – Olaf

+0

@BLUEPIXY a必須是它是如何,這是一個要求。 –

回答

0

你需要親請提供char *的地址,scanfprintf函數,但您提供的是相同的元素。此外,您需要分配內存到char *a

char *a = malloc(15*sizeof(char)); 
while (1 == scanf("/%[^/ \t\n]", a)) 
    printf(">%s<\n", a); 

輸出:

>test<