我面临的问题是,当我使用指针表示法并运行代码时,它什么也不显示;而当我使用数组表示法时,它却显示期望的结果。我不知道指针表示法出了什么问题。
#include <iostream>
#include <cctype>
#include <cstring>
using namespace std;
int main()
{
char str[30] = "PROGRAMMING IS FUN";
char* ptr = str;
/*
int count=0;
while(ptr[count] != '\0')
{
ptr[count] = tolower(ptr[count]);
count++;
}
cout<<ptr<<endl; // result is displaying
*/
while(*ptr != '\0')
{
*ptr = tolower(*ptr);
ptr++;
}
cout<<ptr<<endl; // nothing is displaying also no compiler error
// ptr[0] and ptr[1] als0 displays nothing.
}
答案 0 :(得分:5)
while
循环中断时,ptr
指向字符串末尾的零字节。 while (*ptr != '\0')
就是这样做的。因此,当您尝试输出ptr
时,您正在输出一个空字符串。改为输出str
。
答案 1 :(得分:0)
您必须打印“ str”而不是“ ptr”,因为ptr指向str的结尾。
cout<<str<<endl;
但是,最好执行以下操作:
int len = strlen(str);
for(int i = 0; i<len; i++){
str[i] = tolower(str[i]);
}