2017-02-14 53 views
-1

鑑於以下字符串提取和操縱C中的字符串?

AL0100124Abbeville city              2987  1353 

我想抽象字符串中的某些詞,如 「AL」「阿布維爾」和1353

我知道如何得到的前兩個單詞,並具有以下

char str[2]; 
strncpy(str, original, 2); 
str[2] = '\0'; 

但是,如何獲得「阿比維爾」一詞並處理白色空間呢?

編輯: 我想每一個這些每個字存儲在不同的字符變量, 因此,例如

char str = "AL", 
char str2 = "Abbevile" 
char str3 = "1353" 

我從文件中讀取字符串的原始列表,上面的只是一行

這裏的一個例子是我如何我的代碼看起來

FILE *fp; 
fp = fopen("places.txt", "r"); 
char fileLine[200]; 
while(fgets(fileLine, 200,fp)!= NULL){ 
     char state[3]; 
     char city[20]; 
     //char latitude[10]; 
     //char longitude[10]; 

     strncpy(state,fileLine, 2); 
     state[2] = '\0'; 

} 
+0

請具體談談是什麼,作爲一個「字」的標準。 (char) –

+1

' str'的​​第三個元素,它超出了雙元素數組'str'的​​範圍。 – BLUEPIXY

+3

'str [2] ='\ 0';'寫入'字符串(char) – alk

回答

2

首先,訪問str[2]會導致不確定的行爲:

char str[2]; // Declaration of a char array with the length '2' 
      // Since we are 0-Based it has two elements: 0 and 1 
str[2] = '\0'; // Here you will access the third element, which is not defined 

如果要複製X元素,你需要(在這種情況下char str[3])長度X+1一個陣列。

用法示例:

#include <string.h> 

char str1[20] = "Here you go with your input information"; 
char str2[5]; 
strncpy(str2, str1, 4); 
str2[4] = '\0'; 
printf("First string: %s\n", str2); // prints "Here" 
strncpy(str2, &str1[12], 4); 
str2[4] = '\0'; 
printf("Second string: %s\n", str2); // prints "with" 
+0

感謝數組長度是我的一個錯誤 – RRP

+0

@RRP已將memcpy更改爲strncpy – izlin