【发布时间】:2014-08-14 21:09:29
【问题描述】:
我正在玩 K&R 书中的指针,我编写了这个程序,它交换整数并用指针测量字符串的长度。第一部分有效,但我的字符串长度函数什么也不做。程序编译并运行第一部分,然后程序停止响应。
#include <stdio.h>
extern int a2 = 4;
extern int b2 = 5;
void swap(int *px, int *py);
int strlen2(char *s);
//int printLabel(char *thelabel, char newliner);
//int printLabel(char *thelabel, char newliner)
//{
// int stringlength1=(strlen2(thelabel));
// return stringlength1;
//}
void swap(int *px, int *py) /* interchange *px and *py */
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}
int strlen2(char *s)
{
int n;
for (n = 0; *s != '\0', s++;)
n++;
return n;
}
int main()
{
int a=4;
int b=5;
char newliner = '\n';
swap(&a,&b);
swap(&a2,&b2);
printf("%d",a);
printf("%c",newliner);
printf("%d",b);
printf("%c",newliner);
printf("%d",a2);
printf("%c",newliner);
printf("%d",b2);
printf("%c",newliner);
char sumstring[]="boo";
char *labelPtr;
labelPtr = sumstring;
int length = strlen2(labelPtr);
printf("%d",length);
return 0;
}
【问题讨论】:
-
另外,试试 printf("%d\n", a);而不是两个 printf 行。您也可以折叠 printf("%d\n%d\n%d\n", a, b, a2) 等语句。
-
次要:最好使用类型
size_t:size_t strlen2(char *s) { size_t n; ...和size_t length ... printf("%zu",length);
标签: c arrays string function pointers