簡體   English   中英

C語言中的指針,字符串和函數

[英]Pointers, Strings and functions in C

我錯過了為期一周的課程,其中涵蓋了指針,但是我無法從課堂上獲取注釋,但是我的硬件已到期,我仍然不知道如何使用指針將字符串從一個函數傳遞到另一個函數。 ..下面是我的代碼,在其中我意識到指針已不被弄亂,但我嘗試閱讀其他論壇,但迷路了。 任何幫助表示贊賞。

#include <stdio.h>

char* returnInPlace(char);
int palindrom(char, char );

main(void)
{
  char newString[20];

  printf("Enter a string: ");
  scanf("%s",&newString);

  char flippedString[20]=reverseInPlace(newString);
  int palCheck= palindrome(newString, flippedString);

  if (palCheck==0)
    printf("\n\tThe reverse string is %s, so we don't have a palindrome.", flippedString);
  else
    printf("\n\tThe reverse string is %s, so we do have a palindrome.", flippedString);

}

char* reverseInPlace(char newString)
{
  int iterator;
  char flipped[20];
  char *ptr1;
  for(iterator=0;iterator<20;iterator++)
  {
    flipped[iterator]=firstString[19-iterator];
  }
  ptr1=flipped[];
  return *ptr1;
}

int palindrome(char newString, char flippedString)
{
  int iterator;
  int palCheck=1;
  for(iterator=0;iterator<20;iterator++)
  {
     if (firstString[iterator]==secondString[iterator])
      continue;
     else
     {
       palCheck=0;
       break;      
     }  
  }
  return palCheck;
}

問題1

char* reverseInPlace(char newString) ,您正在使用

return *ptr1;

這是錯誤的。 您可能想要的是

return ptr1;

問題2

ptr1=flipped[];

是錯的。 在這里,您將分配一個flipped的局部變量的基地址並返回該值。 flipped將停止后存在reverseInPlace()執行完畢。 您需要使用動態內存分配。


問題3

char flippedString[20]=reverseInPlace(newString);

是錯的。 除非在定義時進行初始化,否則不能使用= 分配數組。


問題4

char* reverseInPlace(char newString)

通過查看調用該函數的方式,此函數定義看起來是錯誤的。 也許你想要的是

char* reverseInPlace(char* newString)

代替。

......也許還有更多。 強烈建議在跳入編寫代碼之前,先閱讀一些有關Pointers和C基礎的好書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM