這是一個洗掉字串c開頭和結尾空格的程式,你能告訴我錯誤在哪里嗎?我已經嘗試在除錯器中運行它。似乎沒有執行 while 回圈,有點忽視。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
void main()
{
char c[1000],d[1000];
gets(c);
int i=0,j=strlen(c)-1;
while (c[i]==" ")
{
i ;
}
while (c[j]==" ")
{
j--;
}
int k,l=0;
for (k=i;k<=j;k )
{
d[l]=c[k];
l ;
}
printf(d);
}
uj5u.com熱心網友回復:
在 C 中應該使用單引號來獲取空格字符。如果使用雙引號,則會得到一個指向包含空格字符和空終止符的字串的指標,這是不同的。
所以" "改為' '.
您的編譯器應該警告您這一點,因為您正在將 achar與 a進行比較const char *。事實上,當我gcc用默認選項編譯你的代碼時,它說:
test.c: In function 'main':
test.c:10:16: warning: comparison between pointer and integer
10 | while (c[i]==" ")
| ^~
test.c:14:16: warning: comparison between pointer and integer
14 | while (c[j]==" ")
| ^~
如果您注意編譯器警告并修復它們,您的編程之旅將變得更加輕松。您還可以將選項傳遞-Wall給您的編譯器,使其向您提供更多警告。
您還需要在d字串中添加一個空終止符。所以在最后一個回圈之后添加這一行:
d[l] = 0;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/347379.html
