给出以下字符串
AL0100124Abbeville city 2987 1353
我想从字符串中抽象出某些单词,例如 “AL”“Abbeville”和1353
我理解如何获得前两个单词并且有以下内容
char str[2];
strncpy(str, original, 2);
str[2] = '\0';
但我如何得到“Abbeville”这个词来处理白色空间?
修改 我想将每个单词中的每一个存储在不同的char变量中, 所以例如
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 :(得分: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
元素,则需要一个长度为X+1
的数组(在这种情况下为char str[3]
)。
使用示例:
#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"