C中字符串处理相关

这是一个纯吐槽文,我的C水平实在是小学生水平,写点代码漏洞摆出,改个bug耗时耗力,至此我重新明白一个真理,就是要多练…

一个工作,假设输入是这样的,一行,一个字符串一个数字:

hello 435

现在我们读了一行,要把它分成字符串和数字的键值对。
完成的工作基本上就是两个,str的split和str->int转换。

一些代码:

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

//atoi的一种实现
int strToInt(const char *str){
    int total = 0;
    int k;
    for (; *str; ++str){
        k = *str - '0';
        //printf("%c %d %d\n", *str, *str, k);
        if (k <= 9 && k >= 0){
            total = total * 10 + k;
        } else {
            break;
        }
    }
    return total;
}

int main(){
    char line[1024];
    fgets(line, 1024, stdin);
    //printf("%s\n", line);
    int spindex = 0;
    char *lp = line;//important here
    for (; *lp; ++lp){
        if (*lp == ' ')
            break;
        spindex++;//这个位置在break后面
    }
    printf("spindex: %d\n", spindex);
    char first[100];
    char second[100];
    //这个函数显示destination后是source
    strncpy(first, line, spindex);
    //最后要加一个结束符因为上面copy工作是没有的!
    first[spindex] = '\0';
    //这边要+1,要不最后多读了空格,我的strToInt就不工作了(当然可以改那个函数)...
    strcpy(second, line+spindex+1);
    printf("first: %s; second: %s\n", first, second);
    printf("atoi: %d\n", atoi(second));
    printf("strToInt: %d\n", strToInt(second));
}

我犯了大量无知的小错误,因为小错误会积累成大错误,真的很弱,没啥好解释的,忏悔中…

长时间写python的确会提高写程序的乐趣,因为不用处理这么多麻烦的事。但是C水平果断会下降…

吐槽文结束…

Tags :

0 thoughts on “C中字符串处理相关”

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Click the right image To submit your comment: