我試圖將一個字符串拆分成多個小字符串(nb大小)。 但它不工作,因爲我想:爲什麼strincpy在我的for循環無效?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <sys/types.h>
int main(int argc, char *argv[]) {
char *source = argv[1];
int taille=0;
int i=0;
int k;
int nb = 5;
char dest[strlen(source)/nb][nb];
while(i<strlen(source))
{
char *src = &source[i];
strncpy(dest[taille],src,nb);
i=i+nb;
taille++;
}
for(k = 0 ; k <8;k++)
{
printf("\t%s\n",dest[k]);
}
}
這裏是跟蹤:
[email protected]:~/codeFTP/code/serveur$ ./a.out " bonjour cocoman, tu me donne20 balles?"
bonjour cocoman, tu me donne20 balles?
our cocoman, tu me donne20 balles?
ocoman, tu me donne20 balles?
n, tu me donne20 balles?
me donne20 balles?
onne20 balles?
0 balles?
les?
但最奇怪的是,如果我走了一段時間(或thefor,我嘗試兩種),它的工作(通過起飛,而我的意思是用適當的值而不是使用循環寫入strncpy 8次)。 感謝您的關注。
你是怎麼編譯這段代碼的?你應該創建一個const大小的數組,或者爲它分配內存!在這一行中: 「char dest [strlen(source)/ nb] [nb];」當strlen(源代碼)在運行時指定時 ! – mostafa88