【发布时间】:2017-04-18 16:52:57
【问题描述】:
我试图从传递给 getPhoneNumber(char[] str) 的字符串中获取电话号码,但由于某种原因,我每次运行时都会附加一些随机字符代码,我需要帮助。
源代码
#include <stdio.h>
#include <string.h>
char* getPhoneNumber(char str[]);
int main(){
getPhoneNumber("AT+CMGR=5 \n+CMGR: \"REC READ\",\"+9349036332058\",\"samuel\",\"17/03/31,20:44:52+04\"\nHOW THINS fa OK");
return 0;
}
char* getPhoneNumber(char str[]){
char *temp = strchr(str, ',')+2;
const unsigned short len1 = strlen(temp);
printf("value in temp : %s\n\n",temp);
char *strPtr = strchr(temp, '\"');
const unsigned short len2 = strlen(strPtr);
printf("value in strPtr : %s\n\n",strPtr);
int phone_num_len = len1-len2;
char phone_num[phone_num_len];
strncpy(phone_num, temp,phone_num_len);
printf("Phone number : %s",phone_num);
}
出于调试目的,我还打印了 temp 和 strPtr 的各个值,但返回的值似乎没问题。 程序的输出如下图所示。
【问题讨论】:
-
strncpy()尽管它的名字不是为使用 strings 而设计的。它不关心 strings 的强制终止'\0'。您应该在调用后自己添加'\0'字节,或使用其他函数。在计算结果数组的大小时,您还需要考虑该终止字节。 -
但是当我尝试在ideone 上运行它时,我得到了预期的输出。
-
以文本形式发布文本优于以图片形式发布文本。
-
@lilfancy 所以那里 碰巧 是一个方便的终止 0。
-
著名的@chux