我遇到了问题。在我的程序中,我想划分字符串,将每个子字符串保存在变量中,然后将它们转换为 int,以便我可以进行一些计算。
#include <stdio.h>
#include<string.h>
int main()
{
char *token;
char *token2;
char line[] = "-500,600";
char *search = ",";
printf("%s\n",line);
token = strtok(line, search);
printf("token1: %s\n",token);
token2 = strtok(NULL, search);
printf("token2: %s\n",token2);
int n = toInt(token);
int m = toInt(token2);
printf("String = %s\nInteger = %d\n", token, n);
printf("String = %s\nInteger = %d\n", token2, m);
int b = n*3;
int c = m*2;
printf("%d\n",b);
printf("%d",c);
return 0;
}
int toInt(char a[]) {
int c, sign, offset, n;
if (a[0] == '-') { // Handle negative integers
sign = -1;
}
if (sign == -1) { // Set starting position to convert
offset = 1;
}
else {
offset = 0;
}
n = 0;
for (c = offset; a[c] != '\0'; c++) {
n = n * 10 + a[c] - '0';
}
if (sign == -1) {
n = -n;
}
return n;
}
当输入值是例如时,它工作正常:
char line[] = "500,600";
char line[] = "-500,-600";
char line[] = "500,-600";
但是当我尝试
char line[] = "-500,600";
我得到了奇怪的输出:
toInt 函数可能有问题,但我无法说出问题所在。也许你们中有人有想法。
我知道我可以使用 atoi 函数使事情变得更简单,但我感兴趣的是这里出了什么问题。
最佳答案
感谢评论中的快速答复。初始化sign
解决了我的问题。
关于c - 分割字符串并转换为 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43851186/