在C中提取和操作字符串?

时间:2017-02-14 07:49:47

标签: c

给出以下字符串

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';

}

1 个答案:

答案 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"