【发布时间】:2012-07-10 20:29:26
【问题描述】:
我正在转换(从 javascript)一个程序,该程序将采用可变长度的字符串(但始终低于 100 个字符)并返回单个变量中字符串中包含的数据。这是我的代码的第一部分,显然,我是 C 和一般编程的新手。此代码用于代码的第一部分,但学习如何正确编码这将使我知道如何编码其余部分。
我需要:
- 前 4 位数字存储为 'stringID'
- 要存储为“myindicator”的第 5 位数字
- 第 6 位到(指示符 + 6)位存储为“var1”
示例输入:
'12345678901234567890123'
示例输出:
- 字符串 ID = 1234
- myindicator = 5
- var1 = 67890123456
当我运行程序时,它返回“字符串 ID:H>a”,然后程序崩溃。任何帮助,将不胜感激。不,这不是家庭作业。
int main()
{
char mystring[100];
char *stringID;
int nep;
int *myindicator;
char *var1;
nep = 0;
printf("Please enter your CODE\n");
scanf("%s", &mystring);
stringID = (char *)malloc(4 * sizeof(char));
if(NULL != stringID)
{
strncpy(stringID, mystring, 4);
stringID[4] = '\0';
free(stringID);
nep = nep +4;
printf("stringID: %s\n",myindicator);
}
if(NULL != myindicator)
{
strncpy(myindicator, (mystring+nep, 1);
nep++;
myindicator = *myindicator - '0';
printf("Indicator : %d\n",myindicator);
}
var1 = (char *)malloc((nep + 6) * sizeof(char));
if(NULL != var1)
{
strncpy(var1, mystring+nep, (myindicator+nep+6));
var1[myindicator+nep+6] = '\0';
free(var1);
printf("Var 1: %s", var1);
nep = nep +myindicator+6;
}
getchar();
return 0;
}
【问题讨论】:
-
建议将每个部分(你有三个)分解为单独的函数,并确保每个部分完全按照您希望它们单独工作的方式工作,然后努力让它们一起工作。
-
您可能需要扩展
fails to work properly以获得良好的回复。例如。你得到编译错误吗?链接错误?它会做你没想到的事情吗?当你不看的时候,它会在你的卫生纸上打印葛底斯堡地址吗? -
“我的代码无法正常工作。”请做更多的研究并使用您的调试器来描述代码是如何失败的,并将其简化为应该工作但不能工作的最简单的事情。如果您希望人们理解您,您还必须包含示例输入和预期输出。
标签: c string pointers malloc strncpy