//string?reversal?using?stack
//#include?<iostream>
//#include?<stdlib.h>
#include?<stdio.h>
#include?<stack>
#include?<cstring>
using?namespace?std;
void?Reverse(char?*C,int?n)
{
stack?<char>?S;
//loop?for?push
for?(int?i?=?0;?i<n;?i++)
{
S.push(C[i]);
}
//loop?for?pop
for?(int?j?=?0;?j<n;?j++)
{
C[j]?=?S.top();//overwrite?the?character?at?index?i
S.pop();
}
}
int?main()
{
char?C[51];
printf?("Enter?a?string?:?");
gets(C);
Reverse(C,strlen(C));
printf?("Output?=?%s",C);
printf?("\n");
}這幾個(gè)警告是怎么回事?大神們幫我解析一下啊。。。。。還有就是代碼是不是有問(wèn)題,Reverse的兩個(gè)for循環(huán)并列關(guān)系,應(yīng)該是同步執(zhí)行吧,如果是同步執(zhí)行,那么第二個(gè)for循環(huán)就錯(cuò)了呀。。。。我感覺(jué)有點(diǎn)蒙
3 回答
已采納

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
這幾個(gè)都是警告 gets 函數(shù)不安全、不建議使用了。
這個(gè)函數(shù)不判斷緩沖區(qū)大小,實(shí)際使用很容易造成溢出。你自己做小練習(xí)用用也無(wú)所謂。

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
啊,之前沒(méi)注意到你問(wèn)了兩個(gè)問(wèn)題。
這兩個(gè) for 循環(huán)不是同步執(zhí)行的啊。第一個(gè) for 執(zhí)行完,再執(zhí)行第二個(gè) for 的。
第一個(gè) for 中循環(huán)進(jìn)行壓棧,第二個(gè) for 中取棧頂元素后再?gòu)棗!?/p>
你為什么會(huì)覺(jué)得是并列關(guān)系呢? 因?yàn)樗鼈兊?intent 一樣??
添加回答
舉報(bào)
0/150
提交
取消